Übersicht über die Syntax von ASP.NET-Webseiten

Aktualisiert: November 2007

ASP.NET-Webseiten werden auf ähnliche Weise wie statische HTML-Webseiten (Webseiten ohne serverbasierte Verarbeitung) erstellt, enthalten jedoch einige besondere Elemente, die von ASP.NET beim Ausführen der Seite erkannt und verarbeitet werden. Folgende Eigenschaften unterscheiden ASP.NET-Webseiten von statischen HTML-Seiten (oder anderen):

  • Die Dateinamenerweiterung .aspx anstelle von .htm, .html oder anderen Dateinamenerweiterungen. Die Dateinamenerweiterung .aspx bewirkt, dass die Seite von ASP.NET verarbeitet wird.

    Hinweis:

    Die Zuordnung der Dateinamenerweiterungen zu ASP.NET erfolgt in den Internetinformationsdiensten (IIS). Standardmäßig werden ASPX-Seiten, nicht aber HTM-/HMTL-Seiten, von ASP.NET ausgeführt.

  • Je nach Typ der zu erstellenden Seite eine optionale @ Page-Direktive oder eine andere Direktive.

  • Ein form-Element, das für ASP.NET richtig konfiguriert ist. Das form-Element wird nur benötigt, wenn die Seite Steuerelemente enthält, deren Werte Sie während der Seitenverarbeitung verwenden möchten.

  • Webserversteuerelemente.

  • Servercode, falls Sie der Seite eigenen Code hinzufügen.

    Hinweis:

    Wenn die Seiten dem XHTML-Standard entsprechen sollen, müssen Sie zusätzliche Elemente einfügen, beispielsweise das DOCTYPE-Element. Weitere Informationen finden Sie unter ASP.NET und XHTML.

In den folgenden Abschnitten finden Sie weitere Informationen über jedes dieser Elemente.

Wenn Sie die Dateinamenerweiterung einer HTML-Seite in .aspx umbenennen, wird die Seite anschließend als ASP.NET-Webseite ausgeführt. Wenn innerhalb einer Seite keine Verarbeitung auf dem Server stattfindet, müssen Sie die Dateinamenerweiterung .aspx nicht hinzufügen, da dies nur zu einem zusätzlichen Aufwand bei der Seitenverarbeitung führt.

Beispiel für eine ASP.NET-Webseite

Das folgende Codebeispiel zeigt eine Seite, die die Grundelemente einer ASP.NET-Webseite enthält. Die Seite enthält statischen Text (wie in einer HTML-Seite) zusammen mit ASP.NET-spezifischen Elementen. Diese sind hervorgehoben.

Hinweis:

Aus Gründen der Anschaulichkeit ist die Beispielseite nicht XHTML-konform. Weitere Informationen finden Sie unter ASP.NET und XHTML.

Sicherheitshinweis:

Diese Beispielseite enthält ein Textfeld für Benutzereingaben. Benutzereingaben sind ein potenzielles Sicherheitsrisiko. Standardmäßig stellt die ASP.NET-Seite sicher, dass die Benutzereingabe keine Skript- oder HTML-Elemente enthält. Weitere Informationen finden Sie unter Übersicht über Skriptangriffe.

<%@ Page Language="VB" %>
<html>
<script >    Sub Button1_Click(ByVal sender As Object, _        ByVal e As System.EventArgs)        Label1.Text = "Welcome, " & TextBox1.Text    End Sub</script>
<head >
  <title>Basic ASP.NET Web Page</title>
</head>
<body>
  <form id="form1" >
    <h1>Welcome to ASP.NET</h1>
    <p>Type your name and click the button.</p>
    <p>
      <asp:TextBox ID="TextBox1" ></asp:TextBox><asp:Button ID="Button1"  Text="Click" OnClick="Button1_Click" />
    </p>
    <p>
      <asp:Label ID="Label1" ></asp:Label>
    </p>
  </form>
</body>
</html>
<%@ Page Language="C#" %>
<html>
<script >Void Button1_Click(object sender, System.EventArgs e) {    Label1.Text = ("Welcome, " + TextBox1.Text);}</script>
<head >
  <title>Basic ASP.NET Web Page</title>
</head>
<body>
  <form id="form1" >
    <h1>Welcome to ASP.NET</h1>
    <p>Type your name and click the button.</p>
    <p>
      <asp:TextBox ID="TextBox1" ></asp:TextBox>      <asp:Button ID="Button1"          Text="Click" OnClick="Button1_Click" />
    </p>
    <p>
      <asp:Label ID="Label1" ></asp:Label>
    </p>
  </form>
</body>
</html>

@-Direktiven

ASP.NET-Seiten enthalten normalerweise Direktiven, mit denen Sie Seiteneigenschaften und Konfigurationsinformationen für die Seite angeben können. Die Direktiven dienen ASP.NET zwar als Anweisungen für das Verarbeiten der Seite, werden jedoch nicht als Teil des an den Browser gesendeten Markups gerendert.

Die am häufigsten verwendete Direktive ist die @ Page-Direktive, mit der Sie zahlreiche Konfigurationsoptionen der Seite festlegen können. Zu diesen Optionen gehören:

  • Die Serverprogrammiersprache für Code in der Seite.

  • Die Angabe, ob es sich bei der Seite um eine Einzeldateiseite (der Servercode ist direkt in der Seite enthalten) oder um eine Code-Behind-Seite (der Code der Seite befindet sich in einer separaten Klassendatei) handelt. Die Seite aus dem vorherigen Beispiel ist eine Einzeldateiseite; der Code befindet sich direkt in der Seite, und die @ Page-Direktive enthält keine Informationen über verknüpfte Klassendateien. Weitere Informationen finden Sie unter "Servercode" weiter unten in diesem Thema sowie unter Codemodell für ASP.NET-Webseiten.

  • Debug- und Ablaufverfolgungsoptionen.

  • Ob der Seite eine Masterseite zugeordnet ist und sie deshalb als Inhaltsseite behandelt werden soll.

Wenn Sie keine @ Page-Direktive in die Seite einfügen oder wenn die Direktive keine spezifischen Einstellungen enthält, werden die Einstellungen von der Konfigurationsdatei der Webanwendung (die Datei Web.config) oder von der Sitekonfigurationsdatei (die Datei Machine.config) geerbt.

Zusätzlich zu einer @ Page-Direktive können Sie auch andere Direktiven hinzufügen, die weitere seitenspezifische Optionen unterstützen. Zu den gängigen Direktiven gehören:

  • @ Import   Mit dieser Direktive können Sie Namespaces angeben, auf die Sie im Code verweisen möchten.

  • @ OutputCache   Mit dieser Direktive können Sie festlegen, dass die Seite zwischengespeichert werden soll, und Sie können über Parameter die Bedingungen und die Dauer der Zwischenspeicherung angeben.

  • @ Implements   Mit dieser Direktive können Sie festlegen, dass die Seite eine .NET-Schnittstelle implementiert.

  • @ Register   Mit dieser Direktive können Sie zusätzliche Steuerelemente registrieren, die Sie auf der Seite verwenden möchten. Die @ Register-Direktive deklariert das Tagpräfix des Steuerelements und den Speicherort der Assembly des Steuerelements. Sie müssen diese Direktive verwenden, wenn Sie einer Seite Benutzersteuerelemente oder benutzerdefinierte ASP.NET-Steuerelemente hinzufügen möchten.

Bestimmte ASP.NET-Dateitypen verwenden eine andere Direktive als @ Page. So verwenden z. B. ASP.NET-Masterseiten eine @ Master-Direktive und ASP.NET-Benutzersteuerelemente eine @ Control-Direktive. Mit den jeweiligen Direktiven können Sie verschiedene Optionen angeben, die für die Datei geeignet sind.

Ausführliche Informationen finden Sie unter Übersicht über ASP.NET-Masterseiten und ASP.NET-Benutzersteuerelemente.

Formularelemente

Wenn die Seite Steuerelemente enthält, über die der Benutzer mit der Seite interagieren und die Seite anschließend übermitteln kann, muss die Seite über ein form-Element verfügen. Sie können zwar das standardmäßige form-Element von HTML verwenden, jedoch gelten bestimmte Regeln. Für die Verwendung des form-Elements gelten folgende Regeln:

  • Die Seite kann nur ein einziges form-Element enthalten.

  • Das form-Element muss ein runat-Attribut mit dem Wert server enthalten. Mit diesem Attribut können Sie auf das Formular und die Steuerelemente im Servercode programmgesteuert verweisen.

  • Serversteuerelemente, die ein Postback ausführen können, müssen sich innerhalb des form-Elements befinden.

  • Das Starttag darf kein action-Attribut enthalten. ASP.NET legt diese Attribute bei der Verarbeitung dynamisch fest und überschreibt alle möglicherweise vorgenommenen Einstellungen.

Webserversteuerelemente

Den meisten ASP.NET-Seiten fügen Sie Steuerelemente hinzu, über die der Benutzer mit der Seite interagieren kann, beispielsweise Schaltflächen, Textfelder, Listen usw. Diese Webserversteuerelemente sind HTML-Schaltflächen und input-Elementen sehr ähnlich. Sie werden allerdings auf dem Server verarbeitet, wodurch es möglich ist, die Eigenschaften der Webserversteuerelemente im Servercode festzulegen. Die Steuerelemente lösen außerdem Ereignisse aus, die Sie im Servercode behandeln können.

Serversteuerelemente verwenden eine besondere Syntax, die ASP.NET beim Ausführen der Seite erkennt. Das folgende Codebeispiel zeigt einige typische Webserversteuerelemente.

Sicherheitshinweis:

Benutzereingaben in TextBox stellen ein potenzielles Sicherheitsrisiko dar. Standardmäßig stellt die ASP.NET-Seite sicher, dass die Benutzereingabe keine Skript- oder HTML-Elemente enthält. Weitere Informationen finden Sie unter Übersicht über Skriptangriffe.

<asp:TextBox ID="TextBox1" ></asp:TextBox>
<asp:Button ID="Button1"  
    Text="Click" OnClick="Button1_Click" />
<asp:TextBox ID="TextBox1" ></asp:TextBox>
<asp:Button ID="Button1"  
    Text="Click" OnClick="Button1_Click" />

Der Tagname von ASP.NET-Serversteuerelementen beginnt mit einem Präfix, in diesem Fall asp:. Für ein Steuerelement, das nicht zu .NET Framework gehört, könnte das Präfix auch anders lauten. ASP.NET-Steuerelemente enthalten außerdem das -Attribut und eine optionale ID, mit der Sie im Servercode auf das Objekt verweisen können.

Wenn die Seite ausgeführt wird, werden die Serversteuerelemente erkannt, und der zugehörige Code wird ausgeführt. Viele Steuerelemente rendern HTML oder anderes Markup in der Seite. Zum Beispiel rendert das asp:textbox-Steuerelement ein input-Element mit einem type="text"-Attribut auf der Seite. Die Zuordnung von Webserversteuerelementen und HTML-Elementen erfolgt nicht unbedingt im Verhältnis 1:1. Zum Beispiel stellt das asp:calendar-Steuerelement eine HTML-Tabelle dar. Einige Steuerelemente übernehmen überhaupt keine Renderfunktion im Browser, sondern werden auf dem Server verarbeitet und stellen Informationen für andere Steuerelemente bereit.

HTML-Elemente als Serversteuerelemente

Anstelle von oder zusätzlich zu ASP.NET-Serversteuerelementen können Sie gewöhnliche HTML-Elemente als Serversteuerelemente verwenden. Sie können jedem HTML-Element in der Seite das -Attribut und das ID-Attribut hinzufügen. Beim Ausführen der Seite wird das Element von ASP.NET als Serversteuerelement erkannt und dem Servercode verfügbar gemacht. Zum Beispiel können Sie einem HTML-body-Element die erforderlichen Elemente hinzufügen, wie im folgenden Codebeispiel gezeigt.

<body  id="body">

Sie können anschließend im Servercode auf das body-Element verweisen und z. B. als Reaktion auf eine Benutzereingabe oder auf Datenbankinformationen die Hintergrundfarbe zur Laufzeit festlegen.

Weitere Informationen hierzu finden Sie unter Übersicht über ASP.NET-Webserversteuerelemente.

Servercode

Die meisten ASP.NET-Seiten enthalten Code, der beim Verarbeiten der Seite auf dem Server ausgeführt wird. ASP.NET unterstützt viele Sprachen, einschließlich C#, Visual Basic, J#, Jscript und andere.

ASP.NET unterstützt zwei Modelle für das Schreiben von Servercode für eine Webseite. Beim Einzeldateimodell befindet sich der Code der Seite in einem script-Element, dessen Starttag das -Attribut enthält. Im Beispiel weiter oben wird das Einzeldateimodell veranschaulicht.

Alternativ dazu können Sie den Code einer Seite in eine separate Klassendatei schreiben. Dieser Ansatz wird als Code-Behind-Modell bezeichnet. In diesem Fall enthält die ASP.NET-Webseite praktisch keinen Servercode. Stattdessen enthält die @ Page-Direktive Informationen, über die die ASPX-Seite mit der zugeordneten Code-Behind-Datei verknüpft wird. Das folgende Codebeispiel zeigt eine typische @ Page-Direktive für eine Seite mit einer Code-Behind-Datei.

<%@ Page Language="VB" CodeFile="Default.aspx.vb" Inherits="Default" %>
<%@ Page Language="C#" CodeFile="Default.aspx.cs" Inherits="Default" %>

Das CodeFile-Attribut gibt den Namen der separaten Klassendatei an, das Inherits-Attribut den Namen der Klasse innerhalb der Code-Behind-Datei, die der Seite zugeordnet ist.

Weitere Informationen finden Sie unter Codemodell für ASP.NET-Webseiten.

Hinweis:

ASP.NET-Webseiten können auch Clientskripts enthalten, die im Browser als Reaktion auf clientseitige Ereignisse ausgeführt werden. Eine ASP.NET-Seite kann sowohl Clientskripts als auch Servercode enthalten. Weitere Informationen finden Sie unter Clientskript in ASP.NET-Webseiten.

Siehe auch

Konzepte

Übersicht über ASP.NET-Webseiten

Einführung in ASP.NET-Webseiten

Übersicht über ASP.NET-Ausdrücke

Weitere Ressourcen

Syntax der ASP.NET-Konfigurationsdateien

Programmieren von ASP.NET-Webseiten