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.
Ä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 finden Sie unter Codemodell für ASP.NET-Webseiten.
Deklarieren von Variablen und Prozeduren
Alle ASP.NET-Prozeduren und globalen Variablen sollten innerhalb von <script runat="server">-Blöcken deklariert werden, die sich vor dem <html>-Tag befinden, jedoch nicht innerhalb von ASP-Stiltrennzeichen <%...%>. Variablen können weiterhin in <%...%>-Darstellungsblöcken deklariert werden. Diese Variablen sind jedoch nur für Darstellungsblö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 Darstellungsblock 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 runat="server">
' 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" runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<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 runat="server">
// 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 runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<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
Darstellungsfunktionen 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 Darstellungszeit (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 runat="server">
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 runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
Hello.<br />
<asp:Button ID="Button1" runat="server"
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 runat="server">
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" runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
Hello.<br />
<asp:Button ID="Button1" runat="server"
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
Neues im ASP.NET-Webseitenmodell
Übersicht über die Syntax von ASP.NET-Webseiten
Übersicht über den Lebenszyklus von ASP.NET-Seiten
Ereignismodell für ASP.NET-Webserversteuerelemente
Weitere Ressourcen
Migrieren zu ASP.NET
Programmieren von ASP.NET-Webseiten mit Clientskripts