Die ASP.NET-Webformularseite ist eine deklarative Textdatei mit der Erweiterung .aspx. Zusätzlich zu statischen Inhalten können Sie Elemente mit acht verschiedenen Syntaxen markieren. In diesem Abschnitt werden diese Syntaxelemente besprochen und einige Beispiele für deren Verwendung bereitgestellt.
Syntax zum Rendern von Code: <% %> und <%= %>
Code-Rendering-Blöcke werden durch <% ... %>-Elemente dargestellt, die Ihnen die Steuerung des gerenderten Inhalts ermöglichen und während der Anzeigephase der Web Forms-Seite ausgeführt werden Ausführung. Das folgende Beispiel zeigt, wie man sie verwendet, um den Inhalt von HTML zu durchlaufen.
<%@ Seitensprache="VB" %>
<html>
<Körper>
<% Dim I As Integer
Für I = 0 bis 7 %>
<font size="<%=I%>"> Hallo Welt! </font> <br>
<%Weiter %>
</Körper>
</html>
<% ... %> enthaltene Code wird nur ausgeführt, während der Ausdruck mit dem Gleichheitszeichen (<%= ... %>) das Ergebnis berechnet, wenn der Inhalt angezeigt wird. Daher zeigt <%="Hello World" %> das gleiche Ergebnis an wie der C#-Code <%Response.Write("Hello World" %>).
Beachten Sie, dass es wichtig ist, diese Markierungen richtig zu platzieren, da die Sprache die Verwendung von Markierungen zum Beenden oder Trennen von Anweisungen erfordert (z. B. das Semikolon ; in C#).
Der C#-Code
<% Response.Write("Hello World"); erfordert ein Semikolon, um die Anweisung zu beenden.
<%="Hello World"; %> Fehler: Verursacht „Response.Write(“Hello World“;);“.
<%="Hello World" %> Es ist kein Semikolon erforderlich.
Syntax zum Deklarieren von Code: <script runat="server">
Der Code-Deklarationsblock definiert die Mitgliedsvariablen und Methoden, die in die Page-Klasse kompiliert werden. Diese Blöcke können zum Erstellen von Seiten- und Navigationslogik verwendet werden. Das folgende Beispiel zeigt, wie die Subtract-Methode im <script runat="server">-Block definiert und dann auf der Seite aufgerufen wird.
<html>
<script language="VB" runat=server>
Funktion Subtract(Num1 As Integer, Num2 As Integer) As Integer
Gibt Num1-Num2 zurück
Funktion beenden
</script>
<body>
<%
Dim Number As Integer = 100
Tun Sie dies, solange die Zahl > 0 ist
Response.Write("Wert: " & Zahl & "<br>")
Zahl = Subtrahieren (Zahl, 1)
Schleife
%>
</Körper>
</html>
Bitte beachten Sie: Im Gegensatz zu ASP – in ASP müssen Funktionen im <% %>-Block definiert werden – müssen alle Funktionen und globalen Variablen mit dem <script runat=server>-Tag definiert werden. Die Funktionsdeklaration im <% %>-Block löst eine Fehlermeldung bei der Syntaxkompilierung aus.
Serversteuersyntax
Angepasste ASP.NET-Serversteuerelemente ermöglichen es Seitenentwicklern, HTML-Benutzeroberflächen dynamisch zu generieren und auf Clientanforderungen zu reagieren. Sie werden in Dateien mithilfe einer deklarativen, Markup-basierten Syntax ausgedrückt. Diese Tags unterscheiden sich von anderen Tags dadurch, dass sie ein „runat=server“-Attribut enthalten. Das folgende Beispiel zeigt, wie das Serversteuerelement <asp:label runat="server"> in einer ASP.NET-Seite verwendet wird. Dieses Steuerelement entspricht der Label-Klasse im System.Web.UI.WebControls-Namespace.
Durch das Hinzufügen eines Tags mit der ID „Message“ kann zur Laufzeit eine Label-Instanz erstellt werden:
<asp:label id="Message" font-size=24 runat="server"/>
Über diesen Namen können wir auf das Control zugreifen . Der folgende Code legt die Text-Eigenschaft des Steuerelements fest.
Message.Text = „Willkommen bei ASP.NET“
<html>
<script language="VB" runat=server>
Sub Page_Load(Sender als Objekt, E als EventArgs)
Message.Text = „Willkommen bei ASP.NET“
Sub beenden
</script>
<Körper>
<asp:label id="Message" font-size=24 runat=server/>
</Körper>
</html>
Syntax der HTML-Serversteuerung
Mit der HTML-Serversteuerung können Entwickler HTML-Elemente auf der Seite programmgesteuert bedienen. Das HTML-Server-Steuerelement-Tag unterscheidet sich vom Client-HTML-Element darin, dass es über das Attribut „runat=server“ verfügt. Das folgende Beispiel zeigt, wie das HTML-Serversteuerelement <span runat=server> in einer ASP.NET-Seite verwendet wird.
<html>
<script language="VB" runat=server>
Sub Page_Load(Sender als Objekt, E als EventArgs)
Message.InnerHtml = „Willkommen bei ASP.NET“
Sub beenden
</script>
<Körper>
<span id="Message" style="font-size:24" runat=server/>
</Körper>
</html>
Datenbindungssyntax: <%# %>
Die integrierte Unterstützung von ASP.NET für die Datenbindung ermöglicht es Seitenentwicklern, Steuereigenschaften hierarchisch an Datencontainerwerte zu binden. Der Code im Codeblock <%# %> wird nur ausgeführt, wenn die DataBind-Methode des übergeordneten Steuercontainers aufgerufen wird. Das folgende Beispiel zeigt, wie die Datenbindungssyntax im Steuerelement <asp:datalist runat=server> verwendet wird.
In dieser Datenliste ist jedem Artikel eine Vorlage zugeordnet. Der Inhalt der Elementvorlage wird mithilfe eines Datenbindungsausdrucks angegeben, und Container.DataItem verweist auf die Datenquelle, die von der MyList-Datenliste verwendet wird.
<asp:datalist id="MyList" runat=server>
<ItemTemplate>
Hier ist ein Wert: <%# Container.DataItem %>
</ItemTemplate>
</asp:datalist>
In diesem Fall wird die Datenquelle des MyList-Steuerelements programmgesteuert festgelegt und dann die DataBind()-Methode aufgerufen.
Der Aufruf der DataBind-Methode eines Steuerelements löst einen rekursiven Baum aus (beginnend mit dem Steuerelement bis zu den unteren Steuerelementen im Baum); das DataBinding-Ereignis jedes Serversteuerelements in der Hierarchie wird ausgelöst und der Datenbindungsausdruck im Steuerelement Werte werden entsprechend berechnet. Wenn daher die DataBind-Methode der Seite aufgerufen wird, wird jeder Datenbindungsausdruck auf der Seite aufgerufen.
<html>
<script language="VB" runat=server>
Sub Page_Load(Sender als Objekt, E als EventArgs)
Dimmen Sie Elemente als neue ArrayList
Items.Add("One")
Items.Add("Zwei")
Items.Add("Three")
MyList.DataSource = Elemente
MyList.DataBind()
End Sub
</script>
<Körper>
<asp:datalist id="MyList" runat=server>
<ItemTemplate>
Hier ist ein Wert: <%# Container.DataItem %>
</ItemTemplate>
</asp:datalist>
</Körper>
</html>
ASP.NET 2.0 enthält außerdem eine neue vereinfachte Datenbindungssyntax, die es Steuerelementen ermöglicht, automatisch Daten an Datenquellensteuerelemente zu binden, ohne DataBind() im Seitencode aufrufen zu müssen. Diese Syntax wird im Kapitel „Durchführen des Datenzugriffs“ erläutert.
Objekt-Tag-Syntax: <object runat="server" />
Mit dem Objekt-Tag können Seitenentwickler eine deklarative, Tag-basierte Syntax verwenden, um Variableninstanzen zu deklarieren und zu erstellen. Das folgende Beispiel zeigt, wie Sie mithilfe der Objektnotation eine Instanz der ArrayList-Klasse erstellen.
Dieses Objekt wird zur Laufzeit automatisch erstellt und ist über die ID „items“ erreichbar.
<html>
<script language="VB" runat=server>
Sub Page_Load(ByVal Sender As Object, ByVal E As EventArgs)
ArrayItems.Add("One")
ArrayItems.Add("Two")
ArrayItems.Add("Three")
MyList.DataSource = ArrayItems
MyList.DataBind()
Sub beenden
</script>
<body>
<object id="ArrayItems" class="System.Collections.ArrayList" runat=server/>
<asp:datalist id="MyList" runat=server>
<ItemTemplate>
Hier ist ein Wert: <%# Container.DataItem %>
</ItemTemplate>
</asp:datalist>
</Körper>
</html>
Serverseitige Kommentarsyntax: <%-- Comment --%>
Serverseitige Kommentare ermöglichen es Seitenentwicklern, die Ausführung und Darstellung von Servercode (einschließlich Serversteuerelementen) und statischen Inhalten zu verhindern. Das folgende Beispiel zeigt, wie verhindert werden kann, dass Inhalte ausgeführt und an den Client gesendet werden. Bitte beachten Sie, dass alle Informationen zwischen <%-- und --%> herausgefiltert werden und nur in der ursprünglichen Serverdatei sichtbar sind, auch wenn diese andere ASP.NET-Anweisungen enthält.
<html>
<Körper>
Der folgende Inhalt wurde mithilfe eines serverseitigen Kommentars für Browser-Clients ausgeblendet
(Sehen Sie sich die .aspx-Quelle an, um zu sehen, was wir meinen :-)
<%--
<asp:calendar id="MyCal" runat=server/>
<% Für I = 0 bis 44 %>
Hallo Welt <br>
<%Weiter %>
--%>
</Körper>
</html>
Serverseitige Dateieinbindungssyntax: <-- #Include File="Locaton.inc" -->
Serverseitige Dateieinbindung (#Include) ermöglicht Entwicklern, den Inhalt einer bestimmten Datei an einer beliebigen Stelle im ASP einzufügen. NET-Seite. Das folgende Beispiel zeigt, wie Sie benutzerdefinierte Titel und Fußzeilen in eine Seite einfügen.
<html>
<Körper>
<!-- #Include File="Header.inc" -->
<br />
<h3> Hauptseiteninhalt </h3>
<br />
<!-- #Include File="Footer.inc" -->
</Körper>
</html>
Ausdruckssyntax: <%$ ... %>Neue Funktionen in 2.0
ASP.NET 2.0 fügt eine neue deklarative Ausdruckssyntax für die Werteersetzung vor der Seitenanalyse hinzu. Dies ist sehr nützlich, wenn wir den Eigenschaftswert der Serversteuerung durch den Wert der Verbindungszeichenfolge oder die Anwendungseinstellung in der Datei Web.config ersetzen müssen. Es kann auch verwendet werden, um Werte in Ressourcendateien während der Lokalisierung zu ersetzen.
<asp:SqlDataSource ID="SqlDataSource1" ConnectionString='<%$ ConnectionStrings:Pubs %>' runat="server" SelectCommand="sp_GetAuthors" />
<asp:Label ID="Label1" Text='<%$ Ressourcen: ExchRate, ConvertLabel %>' runat="server"/>