Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Aktualisiert: November 2007
Ähnlich wie in der Seitenstruktur von Active Server Pages (ASP) können im Einzeldateiseitenmodell von ASP.NET vor dem HTML-Code Skriptblöcke stehen, die Code enthalten, und im HTML-Code können besondere Markuptags verwendet werden. In diesem Thema werden die Probleme beschrieben, die mit der Aktualisierung von ASP-Code auf ASP.NET verbunden sind.
Im Code-Behind-Seitenmodell von ASP.NET wird Skriptblockcode von HTML-Markuptags und ASP.NET-Markuptags getrennt. Weitere Informationen hierzu finden Sie unter Übersicht über die Syntax von ASP.NET-Webseiten. Weitere Informationen über Datenbindungssyntax, die das Binden von Werten von Steuerelementeigenschaften an Daten ermöglicht, finden Sie unter Übersicht über Datenbindungsausdrücke.
Deklarieren von Variablen und Prozeduren
Alle ASP.NET-Prozeduren und globalen Variablen sollten innerhalb von <script >-Blöcken deklariert werden, die sich vor dem öffnenden <html>-Tag befinden, jedoch nicht innerhalb von ASP-Trennzeichen <%...%>. Variablen können weiterhin in <%...%>-Renderblöcken deklariert werden. Diese Variablen sind jedoch nur für Renderblöcke auf der Seite und nicht global für andere Funktionen oder Prozeduren verfügbar. Eine Seite kann mehrere script-Blöcke enthalten, es müssen jedoch alle Blöcke auf der Seite in derselben Programmiersprache geschrieben worden sein.
Das folgende Beispiel zeigt eine ASP.NET-Seite, bei der Variablen und Prozeduren in einem Skriptblock und in einem Renderblock deklariert werden. Wenn Sie der ASP.NET-Seite im URL eine Abfragezeichenfolge übergeben, wird die Abfragezeichenfolge auf der Seite angezeigt.
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script >
' The following variables are visible to all procedures
' within the <script> block.
Dim str As String
Dim i, i2 As Integer
Function DoubleIt(ByVal inpt As Integer) As Integer
' The following variable is visible only within
' the DoubleIt procedure.
Dim factor As Integer = 2
DoubleIt = inpt * factor
End Function
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" >
<title>Untitled Page</title>
</head>
<body>
<form id="form1" >
<div>
<%
' The following local variable is visible only within this
' and other render blocks on the page.
Dim myVar
myVar = Request.QueryString
Response.Write("The querystring is " _
& Server.HtmlEncode(myVar.ToString()))
%>
</div>
</form>
</body>
</html>
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script >
// The following variables are visible to all procedures
// within the <script> block.
String str;
int i;
int i2;
int DoubleIt(int inpt)
{
// The following variable is visible only within
// the DoubleIt procedure.
int factor = 2;
return inpt * factor;
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head >
<title>Untitled Page</title>
</head>
<body>
<form id="form1" >
<div>
<%
// The following local variable is visible only within this
// and other render blocks on the page.
object myVar;
myVar = Request.QueryString;
Response.Write("The querystring is " +
Server.HtmlEncode(myVar.ToString()));
%>
</div>
</form>
</body>
</html>
Darstellen von Text
Renderfunktionen werden in ASP.NET nicht unterstützt. Mithilfe von älteren ASP-Versionen könnten Sie literales HTML in einen Prozedurtext einfügen, wie im folgenden Codebeispiel gezeigt.
<% Sub SomeProcedure() %>
<H3> Render this line of bold text. </H3>
<% End Sub %>
Dieser Code würde auf einer ASP.NET-Seite einen Fehler verursachen. Für ASP.NET müsste der Code folgendermaßen aussehen.
<script runat=server>
Sub SomeProcedure()
Response.Write("<H3> Render this line in bold text.</H3>")
End Sub
</script>
Abgesehen von globalen Variablendeklarationen muss der gesamte Code, der sich zwischen <script>…</script>-Tags befindet, in Prozeduren gekapselt werden.
Verarbeiten, Laden und Entladen von Seiten
In ASP wurde der Code in <%...%>-Tags eingeschlossen, und die Seitenverarbeitung begann mit der ersten Anweisung nach dem ersten <%>-Tag. In ASP.NET muss Code, der unmittelbar nach dem Laden der Seite verarbeitet werden soll, in das systeminterne Page_Load-Ereignis eingeschlossen werden. Sie können weiterhin Code in <%...%>-Blöcke schreiben, er wird jedoch zur Renderzeit (wie in ASP von oben nach unten) nach dem Laden der Seite ausgeführt. Wenn Sie Initialisierungscode ausführen müssen, sollte sich dieser im Page_Load-Ereignis befinden, das unmittelbar nach dem Laden der Seite durch das ASP.NET-Modul ausgelöst wird, wie im folgenden Beispiel gezeigt.
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script >
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
' Place all startup code here, including initialization of
' variables, preloading of controls, and loading of
' data from a database.
If Page.IsPostBack Then
Response.Write("<br />Page has been posted back.")
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head >
<title>Untitled Page</title>
</head>
<body>
<form id="form1" >
<div>
Hello.<br />
<asp:Button ID="Button1"
Text="Click to Post Back" />
</div>
</form>
</body>
</html>
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script >
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
Response.Write("<br />Page has been posted back.");
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" >
<title>Untitled Page</title>
</head>
<body>
<form id="form1" >
<div>
Hello.<br />
<asp:Button ID="Button1"
Text="Click to Post Back" />
</div>
</form>
</body>
</html>
Das systeminterne Page_Unload-Ereignis wird immer als letztes Ereignis während eines Seitenausführungszyklus ausgelöst und kann zum Ausführen von beliebigem Seitenbereinigungscode verwendet werden.
Weitere Informationen finden Sie unter Übersicht über den Lebenszyklus von ASP.NET-Seiten und Ereignismodell für ASP.NET-Webserversteuerelemente.
Siehe auch
Konzepte
Übersicht über die ASP.NET-Seitenklasse
Codemodell für ASP.NET-Webseiten
Clientskript in ASP.NET-Webseiten
Übersicht über die Syntax von ASP.NET-Webseiten
Übersicht über den Lebenszyklus von ASP.NET-Seiten
Ereignismodell für ASP.NET-Webserversteuerelemente