Application | |
HttpApplicationState = Page.Application | |
Gibt eine Instanz der Klasse HttpApplicationState zurück, die dem intrinsischen ASP-Objekt Application entspricht. Eine Instanz der Klasse HttpApplicationState enthält globale Informationen, die von mehreren Sitzungen und Anfragen innerhalb einer ASP.NET-Anwendung gemeinsam genutzt werden können. Weitere Informationen über die Klasse HttpApplicationState und ihre Mitglieder finden Sie in Kapitel 13. |
|
Parameter
|
|
Beispiel | |
Das folgende Codebeispiel verwendet die Eigenschaft Application des Page-Objekts, um dem Application-Objekt ein Namens-/Wertpaar hinzuzufügen und den Wert in einem Beschriftungssteuerelement anzuzeigen. Da alle Eigenschaften des Page-Objekts dem gesamten zur Seite gehörigen Code direkt offen gelegt werden, ist es nicht erforderlich, die Klasse Page (d. h. Page.Application) explizit zu nennen, um auf die Eigenschaft Application zuzugreifen. |
|
Sub Page_Load( ) Application("Name") = "John Doe" Message.Text = "The value <em>" & CStr(Application("Name")) & _ "</em> has been added to the Application collection." End Sub |
|
Hinweise | |
Es ist zwar möglich, eine lokale Objektreferenz in die Instanz HttpApplicationState für die Anwendung abzurufen, aber in der Regel wird diese Eigenschaft genutzt, um wie im Beispiel gezeigt darauf direkt über die Eigenschaft Application zuzugreifen. |
Cache | ||||||||||||||
Cache = Page.Cache | ||||||||||||||
Gibt eine Instanz der Klasse Cache zurück, die den Cache für eine Anwendungsdomäne darstellt. Mithilfe der Eigenschaft Cache können Daten dem Cache hinzugefügt und von dort abgerufen werden. |
||||||||||||||
Parameter
|
||||||||||||||
Beispiel | ||||||||||||||
Im folgenden Codebeispiel werden dem Cache-Objekt mittels der Eigenschaft Cache der Klasse Page zwei Namens-/Wertpaare hinzugefügt. Die Werte werden mithilfe der Eigenschaft Cache des Page-Objekts in einem Beschriftungssteuerelement angezeigt: |
||||||||||||||
Sub Page_Load(o As Object, e As EventArgs) Cache("Name") = "John Doe" Cache("Age") = 42 Message.Text = CStr(Cache.Item("Name")) & " is " & _ CStr(Cache("Age")) & " years old." End Sub |
||||||||||||||
Hinweise | ||||||||||||||
Wie auch beim Application-Objekt erfolgt der Zugriff auf das Cache-Objekt häufiger direkt über die Eigenschaft Cache als über den Abruf einer lokalen Objektreferenz auf die Cache-Instanz der Anwendung. Kapitel 13 enthält Informationen über den möglichen Einsatz von Cache in ASP.NET anstelle der ApplicationState-Sammlung und umgekehrt. Zur Klasse Cache gehören folgende Mitglieder:
|
ClientTarget | |
String = Page.ClientTarget | |
Dient zum Abrufen oder Festlegen eines Stringwerts, mit dem Sie die automatische Browsererkennung in ASP.NET außer Kraft setzen oder die Darstellung der Seite in einem in machine.config oder web.config konfigurierten und durch diese Eigenschaft festgelegten Browsertyp erzwingen können. Folgende Werte sind für diese Eigenschaft vorkonfiguriert:
|
|
Parameter
|
|
Beispiel | |
Das folgende Codebeispiel setzt die Eigenschaft ClientTarget der Klasse Page auf downlevel. Dies bedeutet, dass ASP.NET die Seite für einen unbekannten Browsertyp wiedergeben muss. Die Ausgabe entspricht daher HTML 3.2. Das Beispiel gibt anschließend eine Meldung aus, aus der hervorgeht, ob ein Funktionssatz unterstützt wird. Im Falle von downlevel wird keine der aufgeführten Funktionen unterstützt. |
|
Sub Page_Load( ) Page.ClientTarget = "downlevel" Message.Text = "Page is set to render for the " & _ Page.ClientTarget & " alias.<br/>" Message.Text &= "Supported features:<br/>" Message.Text &= " - JavaScript: " & _ Request.Browser.JavaScript & "<br/>" Message.Text &= " - ActiveX Controls: " & _ Request.Browser.ActiveXControls & "<br/>" Message.Text &= " - Frames: " & _ Request.Browser.Frames & "<br/>" End Sub |
|
Hinweise | |
ClientTarget kann auch mithilfe des Attributs ClientTarget der Direktive @ Page angegeben werden. Wenn wie im Beispiel der Wert für die Eigenschaft ClientTarget auf ie4 gesetzt wird, geht aus der Ausgabe hervor, dass alle aufgeführten Funktionen unterstützt werden. Zwar stellen die meisten Serversteuerelemente HTML 3.2 für alle Browser dar, jedoch sind die Validatorsteuerelemente ein Beispiel für Steuerelemente, die abhängig vom ClientTarget-Wert eine andere Darstellung bewirken. Wenn die Eigenschaft ClientTarget auf downlevel gesetzt wird, erfolgt die Validierung auf der Serverseite. Das bedeutet, dass beim Anzeigen der Quelle kein clientseitiges Skript eine Validierung durchführt. Wenn ClientTarget auf uplevel gesetzt wird, generieren die Validatorsteuerelemente clientseitigen JavaScript-Code, um eine clientseitige Validierung durchzuführen. |
Context | |
HttpContext = Page.Context | |
Gibt eine Instanz von HttpContext zurück, die Kontextinformationen für die aktuelle HTTP-Anforderung enthält. |
|
Parameter
|
|
Beispiel | |
Im folgenden Codebeispiel wird die Eigenschaft Context verwendet, um den Namen des momentan angemeldeten Benutzers zurückzugeben. Diese Informationen können auch über die Eigenschaft User der Klasse Page abgerufen werden, die sich von dem zur aktuellen Anforderung gehörenden HttpContext ableitet. |
|
Sub Page_Load( ) Message.Text = "Currently logged in as: " & _ Context.User.Identity.Name End Sub |
|
Hinweise | |
Diese Eigenschaft wird häufig eingesetzt, um eine Referenz auf HttpContext für die aktuelle Anforderung eines Geschäftsobjekts zu übergeben, das Zugriff auf die intrinsischen Objekte von ASP.NET (Request, Response usw.) benötigt. Die Klasse HttpContext ermöglicht nicht nur den Zugriff auf die intrinsischen Objekte Application, Request, Response, Server und Session, sondern auch auf Trace- und User-Informationen für die aktuelle HTTP-Anforderung. |
EnableViewState | |
Boolean = Page.EnableViewState Page.EnableViewState = Boolean | |
Dient zum Zurückgeben oder Festlegen eines Booleschen Werts, der angibt, ob die Seite ihren Ansichtsstatus und den der darin enthaltenen Serversteuerelemente beibehält. Standardmäßig besitzt diese Eigenschaft den Wert True, der angibt, dass die Seite ihren Ansichtsstatus beibehält. |
|
Parameter
|
|
Beispiel | |
Das folgende Codebeispiel setzt EnableViewState mithilfe des Attributs EnableViewState der Direktive @ Page auf False und zeigt den Wert auf der Seite an: |
|
<%@ Page Language="vb" EnableViewState="True" %> <html> <head> <title></title> <script runat="server"> Sub Page_Load( ) If Page.EnableViewState = True Then Message.Text = "ViewState is enabled." Else Message.Text = "ViewState is disabled." End If End Sub </script> </head> <body> <form runat="server"> <asp:label id="Message" runat="server"/> </form> </body> </html> |
|
Hinweise | |
Wie im Beispiel gezeigt, kann die Eigenschaft EnableViewState auch mithilfe des Attributs EnableViewState der Direktive @ Page angegeben werden. Bei Untersuchung des HTML-Quelltextes einer Seite mit der Browserfunktion "Quelltext" zeigt sich die Auswirkung der Eigenschaft EnableViewState. Wenn die Eigenschaft EnableViewState auf False gesetzt ist, ergibt sich in etwa folgender Quelltext: <input type="hidden" name="_ _VIEWSTATE" value="dDwxMDA3MzE2MzEyOzs+" /> Wenn die Eigenschaft EnableViewState auf True gesetzt ist, ergibt sich in etwa folgender Quelltext: <input type="hidden" name="_ _VIEWSTATE" value="dDwxMDA3MzE2MzEyO3Q8O2w8aTwxPjs+O2w8dDw7bDxpPDM+Oz47bDx0PHA8cDxsPF RleHQ7PjtsPFZhbHVlIG9mIHRoZSBFbmFibGVWaWV3U3RhdGUgcHJvcGVydHkgaXMgVHJ1ZTs +Pjs+Ozs+Oz4+Oz4+Oz4=" /> Die zusätzlichen Zeichen im Wert des versteckten Felds _ _VIEWSTATE geben den Ansichtsstatus der aktuellen Seite an. Zum Ansichtsstatus einer Seite gehören auch die nicht permanenten Eigenschaften von Serversteuerelementen, etwa BackColor oder ForeColor. Seiten, die kein <form>-Element mit dem Attribut runat="server" enthalten, speichern unabhängig vom Wert der Eigenschaft EnableViewState den Ansichtsstatus nicht. |
ErrorPage | |
String = Page.ErrorPage Page.ErrorPage = String | |
Dient zum Zurückgeben oder Festlegen des Namens der Umleitungsseite, die bei einem unverarbeiteten Seitenausnahmefehler angezeigt wird. |
|
Parameter
|
|
Beispiel | |
Das unten stehende Codebeispiel ändert die Eigenschaft ErrorPage und zeigt die ausgeführte Seite, wenn in der Seite ein unverarbeiteter Ausnahmefehler auftritt: |
|
Sub Page_Load( ) Page.ErrorPage = "ErrorPage_Handler.aspx" Dim x, y, overflow As Integer x = 1 y = 0 overflow = x/y 'This code will not be executed Message.Text = "Error Page is " & Page.ErrorPage & "." End Sub |
|
Page_Load für ErrorPage_Handler.aspx sieht folgendermaßen aus: Sub Page_Load( ) Message.Text = "We're sorry. An error occurred during the" & _ " processing of your request. Please try again later." End Sub |
|
Hinweise | |
Die Eigenschaft ErrorPage kann auch mithilfe des Attributs ErrorPage der Direktive @ Page angegeben werden. |
IsPostBack | |
Boolean = Page.IsPostBack | |
Gibt einen Booleschen Wert zurück, der angibt, ob die Seite zum ersten Mal geladen wird (False) oder aufgrund eines Client-Postbacks geladen wird (True). Diese Eigenschaft ist sehr nützlich für die Logik, die bei der erstmaligen Ausführung der Seite ausgeführt werden muss oder jedes Mal, wenn die Seite an sich selbst zurück übertragen wird (je nach der konkreten Struktur der If-Anweisung). |
|
Parameter
|
|
Beispiel | |
Das unten stehende Codebeispiel verwendet die Eigenschaft IsPostBack zur Anzeige verschiedener Meldungen im Beschriftungssteuerelement, je nachdem, ob die Seite zum ersten Mal oder aufgrund eines Client-Postbacks geladen wird. Wenn die Seite zum ersten Mal geladen wird, gibt die Eigenschaft IsPostBack den Wert False zurück, wodurch die Zeichenfolge Non-PostBack angezeigt wird. Durch einen Klick auf die Schaltfläche wird die Seite an sich selbst zurück übertragen, woraufhin IsPostBack den Wert True zurückgibt und die Zeichenfolge PostBack angezeigt wird. |
|
<%@ Page Language="vb" %> <html> <head> <title></title> <script runat="server"> Sub Page_Load( ) If Page.IsPostBack Then Message.Text = "PostBack" Else Message.Text = "Non-PostBack" End If End Sub </script> </head> <body> <form runat="server"> <asp:button id="post" Text="Post page" runat="server"/> <asp:label id="Message" runat="server"/> </form> </body> </html> |
|
Hinweise | |
Die Eigenschaft IsPostBack gibt nur für solche Seiten True zurück, die ein <form>-Element mit dem Attribut runat="server" und mindestens ein Steuerelement enthalten, das einen Postback auslösen kann. Bei diesem Steuerelement kann es sich, wie im Beispiel gezeigt, um eine Schaltfläche (Button) handeln, aber auch um andere Steuerelemente, beispielsweise eine Dropdown-Liste (DropDownList), deren Eigenschaft AutoPostBack auf True gesetzt ist. |
IsValid | |
Boolean = Page.IsValid | |
Gibt einen Booleschen Wert zurück, der angibt, ob Validatorsteuerelemente auf der Seite die Benutzereingabe erfolgreich validieren konnten oder nicht. |
|
Parameter
|
|
Beispiel | |
Im Beispiel wird die Eigenschaft IsValid verwendet, um zu überprüfen, ob die Validierung für die aktuelle Seite erfolgreich war. Dazu wird eine Meldung angezeigt: |
|
<%@ Page Language="vb" %> <html> <head> <title></title> <script runat="server"> Sub Page_Load( ) If IsPostBack Then Page.Validate( ) If Page.IsValid Then Message.Text = "Page is valid." Else Message.Text = "Page is not valid." End If End If End Sub </script> </head> <body> <form runat="server"> Enter your name: <asp:textbox id="name" runat="server"/> <asp:requiredfieldvalidator id="rfvName" controltovalidate="name" enableclientscript="false" errormessage="Required!" runat="server"/> <br/> <asp:button id="submit" Text="Submit" runat="server"/> <br/> <asp:label id="Message" runat="server"/> </form> </body> </html> |
|
Hinweise | |
Die Eigenschaft IsValid bestimmt, ob die Gesamtvalidierung durch die Validatorsteuerelemente (Validators) eines Formulars erfolgreich war. Wenn die Seite keine Validatorsteuerelemente enthält, ist der Wert dieser Eigenschaft immer True. Vor der Überprüfung des Werts von IsValid müssen Sie entweder wie im Beispiel gezeigt die Methode Page.Validate aufrufen oder Sie müssen die Seite mit einem Steuerelement (z. B. Button, ImageButton oder LinkButton) abgeschickt haben, dessen Eigenschaft CausesValidation auf True gesetzt ist. Andernfalls tritt ein Ausnahmefehler auf. Im Beispiel wird die Eigenschaft EnableClientScript des Steuerelements RequiredFieldValidator auf False gesetzt, wodurch die clientseitige Validierung deaktiviert wird. Standardmäßig ist die clientseitige Validierung aktiviert und die Seite wird nicht an den Server gesendet, wenn die Validierung fehlschlägt. Uplevel-Browser führen die Validierung auf dem Client mit clientseitigen Skripts durch. Die Seite wird nur abgesendet, wenn die Validierung erfolgreich ist. Erst beim Absenden der Seite wird die serverseitige Ereignisbehandlungsroutine ausgeführt und je nach dem Wert der Eigenschaft IsValid eine Meldung angezeigt. Bei der Überprüfung der Eigenschaft IsValid ist es von Bedeutung, ob die clientseitige Validierung aktiviert ist, da ein Client mit böswilliger Absicht die clientseitige Validierung umgehen könnte. |
Request | |
HttpRequest = Page.Request | |
Gibt einen Instanz der Klasse HttpRequest zurück, die den Zugriff auf Daten von eingehenden HTTP-Anforderungen ermöglicht. Dies entspricht dem intrinsischen ASP-Objekt Request. Weitere Informationen zur Klasse HttpRequest finden Sie in Kapitel 16. |
|
Parameter
|
|
Beispiel | |
Das folgende Codebeispiel verwendet die Sammlung ServerVariables des HttpRequest-Objekts, um die IP-Adresse des Clients anzuzeigen, von dem die Anforderung stammt: |
|
Sub Page_Load( ) Message.Text = "The current request is from: " & _ CStr(Request.ServerVariables.Item("REMOTE_ADDRESS")) End Sub |
|
Hinweise | |
Wie bei den Eigenschaften Application und Cache können Sie zwar eine lokale Referenz auf die HttpRequest-Instanz abrufen, die zur Anforderung gehört, aber häufiger noch erfolgt der Zugriff auf diese Instanz direkt über die Eigenschaft Request, wie auch in diesem Beispiel gezeigt. |
Response | |
HttpResponse = Page.Response | |
Gibt eine Instanz der Klasse HttpResponse zurück, die Daten über die Antwort speichert und das Senden von HTTP-Antwortdaten an einen Browser ermöglicht. Dies entspricht dem intrinsischen ASP-Objekt Response. Weitere Informationen zur Klasse HttpResponse finden Sie in Kapitel 17. |
|
Parameter
|
|
Beispiel | |
Das folgende Beispiel verwendet die Eigenschaft Response des Page-Objekts, um die Eigenschaft ContentType der Klasse HttpResponse auf text/xml zu setzen. Beim Setzen dieser Eigenschaft wird die Ausgabe der Seite im XML-Format in Internet Explorer 5.0 oder höher angezeigt. |
|
Sub Page_Load( ) Response.ContentType = "text/xml" Message.Text = "This page will be displayed as XML in " & _ "Internet Explorer 5.0 or above." End Sub |
|
Hinweise | |
Wie bei den Eigenschaften Application und Cache können Sie zwar eine lokale Referenz auf die Instanz HttpResponse abrufen, die zur Anforderung gehört, aber häufiger noch erfolgt der Zugriff auf diese Instanz direkt über die Eigenschaft Request, wie auch in diesem Beispiel gezeigt. |
Server | |
HttpServerUtility = Page.Server | |
Gibt eine Instanz der Klasse HttpServerUtility zurück, die nützliche Methoden zur Arbeit mit ASP.NET-Anfragen offen legt. Weitere Informationen zur Klasse HttpServerUtility finden Sie in Kapitel 18. |
|
Parameter
|
|
Beispiel | |
Das folgende Codebeispiel verwendet die Eigenschaft Server zum Zugriff auf die Methode HtmlEncode der Klasse HttpServerUtility, die die Kodierung von HTML-Tags und -Zeichen ermöglicht, so dass diese dem Benutzer direkt angezeigt statt interpretiert und vom Browser dargestellt werden: |
|
Sub Page_Load( ) Message.Text = Server.HtmlEncode("<em>Hello, World!</em>") End Sub |
|
Der aus dieser Seite erzeugte HTML-Code sähe folgendermaßen aus: <html> <head> <title>Server property example</title> </head> <body> <span id="Message"><em>Hello, World!</em></span> </body> </html> |
|
Hinweise | |
Wie bei den Eigenschaften Request und Response können Sie zwar eine lokale Referenz auf die Instanz HttpServerUtility abrufen, die zur Anwendung gehört, aber häufiger noch erfolgt der Zugriff auf diese Instanz direkt über die Eigenschaft Server, wie auch in diesem Beispiel gezeigt. |
Session | |
HttpSessionState = Page.Session | |
Gibt ein Objekt zurück, das die aktuelle Benutzersitzung darstellt. Ein Session-Objekt wird für jeden Benutzer angelegt, der eine Seite von einer ASP.NET-Anwendung anfordert. Sie können sitzungsspezifische Daten im Session-Objekt ablegen und dann über mehrere Seiten in einer ASP.NET-Anwendung darauf zugreifen. Weitere Informationen zur Klasse HttpSessionState finden Sie in Kapitel 19. |
|
Parameter
|
|
Beispiel | |
Das Beispiel verwendet das Session-Objekt zur Anzeige des Werts der Eigenschaft Mode, das angibt, wo Informationen über den Sitzungsstatus gespeichert werden: |
|
Sub Page_Load( ) Message.Text = "Current Session State Mode: " &_ Session.Mode.ToString( ) End Sub |
|
Hinweise | |
Wie bei den Eigenschaften Request und Response können Sie zwar eine lokale Referenz auf die Instanz HttpSessionState abrufen, die zur Anforderung gehört, aber häufiger noch erfolgt der Zugriff auf diese Instanz direkt über die Eigenschaft Session, wie auch in diesem Beispiel gezeigt. |
Trace | |||||||||||
TraceContext = Page.Trace | |||||||||||
Gibt das Objekt TraceContext für die aktuelle Webanforderung zurück. Die Ablaufverfolgung liefert Einzelheiten über die Ausführung der Webanforderung. Zur Klasse TraceContext gehören folgende Mitglieder:
|
|||||||||||
Parameter
|
|||||||||||
Beispiel | |||||||||||
Im folgenden Beispiel wird die Ablaufverfolgung programmatisch aktiviert, und zwar durch die Eigenschaft Trace der Klasse Page. |
|||||||||||
Sub Page_Load( ) If Trace.IsEnabled = True Then Message.Text = "Tracing is enabled." Else Message.Text = "Tracing is not enabled." End If End Sub |
|||||||||||
Hinweise | |||||||||||
Wie bei den Eigenschaften Request und Response können Sie zwar eine lokale Referenz auf die Instanz TraceContext abrufen, die zur Anforderung gehört, aber häufiger noch erfolgt der Zugriff auf diese Instanz direkt über die Eigenschaft Trace, wie auch in diesem Beispiel gezeigt. Weitere Informationen über die Ablaufverfolgung in Anwendungen finden Sie in Kapitel 10. |
User | |||||||
IPrincipal = Page.User | |||||||
Gibt eine Instanz eines Objekts zurück, das die IPrincipal-Schnittstelle implementiert, die Sicherheitsinformationen über den Benutzer enthält, von dem die Seitenanforderung stammt. Die IPrincipal-Schnittstelle implementiert die folgenden Mitglieder:
|
|||||||
Parameter
|
|||||||
Beispiel | |||||||
Das Beispiel ruft über die Eigenschaft User den Authentifizierungsstatus und den Namen des Benutzers ab und zeigt diese Angaben im Browser an: |
|||||||
Sub Page_Load( ) Message.Text = "Authenticated: " & _ User.Identity.IsAuthenticated & "<br/>" Message.Text &= "User Name: " & User.Identity.Name End Sub |
|||||||
Hinweise | |||||||
Damit das von der Eigenschaft User zurückgegebene IPrincipal-Objekt gefüllt ist, muss in machine.config oder web.config in irgendeiner Weise eine Authentifizierung konfiguriert sein. Zumindest aber muss eine Autorisierungsregel konfiguriert sein, die anonyme Benutzer ausschließt. Sind diese Bedingungen nicht erfüllt, gibt die Eigenschaft IsAuthenticated des IIdentity-Objekts False und die Eigenschaft Name einen leeren String zurück. |
ViewState | |
StateBag = Page.ViewState | |
Die Eigenschaft ViewState gibt eine Instanz der Klasse StateBag zurück, die Statusinformationen für Serversteuerelemente auf der Seite enthält. Diese StateBag-Instanz kann auch zum Speichern von beliebigen Daten verwendet werden, die für mehrere Anforderungen derselben Seite beibehalten werden müssen. |
|
Parameter
|
|
Beispiel | |
Das folgende Codebeispiel legt die Eigenschaft ForeColor des Steuerelements Message fest und speichert anschließend den Wert dieser Farbe in der ViewState-Instanz von StateBag. Beim Postback der Seite ruft der Code die gespeicherte Farbe ab und ändert abhängig vom Namen der Farbe die Farbe von Red zu Black oder umgekehrt. |
|
<%@ Page Language="vb" %> <html> <head> <title>ViewState property example</title> <script runat="server"> Sub Page_Load( ) Dim LocalColor As System.Drawing.Color If IsPostBack Then LocalColor = CType(ViewState("LabelColor"), _ System.Drawing.Color) If LocalColor.Name = "Black" Then LocalColor = System.Drawing.Color.Red Else LocalColor = System.Drawing.Color.Black End If Message.ForeColor = LocalColor Message.Text = "Label color is " & LocalColor.Name ViewState("LabelColor") = LocalColor Else Message.ForeColor = System.Drawing.Color.Black LocalColor = Message.ForeColor Message.Text = "Label color is " & LocalColor.Name ViewState("LabelColor") = LocalColor End If End Sub </script> </head> <body> <form runat="server"> <asp:button id="button" text="Click to change label color" runat="server"/> <asp:label id="Message" runat="server"/> </form> </body> </html> |
|
Hinweise | |
ViewState verwaltet nicht nur den Status von Serversteuerelementen automatisch, sondern eignet sich auch hervorragend für den Status der Seite selbst, der von Anforderung zu Anforderung beibehalten werden muss. Die Klasse StateBag kann neben der Speicherung primitiver Datentypen wie Integer oder Strings auch zum Speichern von Objekten verwendet werden, vorausgesetzt, diese Objekte unterstützen die Serialisierung, wie beispielsweise die Struktur Color im Beispiel. Wenn Sie ein Objekt speichern, das die Serialisierung in ViewState unterstützt, wird der Objektstatus automatisch in eine Form serialisiert, die in ViewState gespeichert und zu einer Objektinstanz deserialisiert werden kann, wenn Sie erneut auf das Objekt verweisen. Da ViewState keine Typinformationen mit dem Objekt speichert, müssen Sie das von ViewState abgerufene Objekt in den korrekten Typ umsetzen. In diesem Beispiel ist der Typ System.Drawing.Color. Überlegen Sie es sich gut, wenn Sie große Objekte wie Datensätze in ViewState speichern möchten. Da ViewState als verstecktes Formularfeld gespeichert wird, wird es bei jeder Anforderung an den Browser gesendet. Das Speichern großer Objekte in ViewState führt zu längeren Ladezeiten der Seiten. |
Controls | |
ControlCollection = Page.Controls | |
Bietet Zugriff auf die zur Seite gehörige ControlCollection-Instanz, mit der Sie zur Laufzeit Steuerelemente hinzufügen oder bearbeiten können. |
|
Parameter
|
|
Beispiel | |
Das Codebeispiel verwendet die Eigenschaft Controls, um die Eigenschaft Count der zur Seite gehörigen Klasseninstanz ControlCollection anzuzeigen. Anschließend fügt der Code ein neues Beschriftungssteuerelement (Label) zur Sammlung hinzu und zeigt die aktualisierte Eigenschaft Count durch die Verwendung der neuen Beschriftung an. |
|
Sub Page_Load( ) Message.Text = "There are currently " & Controls.Count & _ " controls on the page.<br/>" Dim Message2 As New Label Controls.AddAt(Controls.Count - 1, Message2) Message2.Text = "There are now " & Controls.Count & _ " controls on the page." End Sub |
|
Hinweise | |
Wie bei den Eigenschaften Session und Trace können Sie zwar eine lokale Referenz auf die Sammlung Controls abrufen, die zur Seite gehört, aber häufiger noch erfolgt der Zugriff auf diese Instanz direkt über die Eigenschaft Controls, wie auch im Beispiel gezeigt. Wenn Sie zum Hinzufügen von Steuerelementen zu einer Seite, die bereits Steuerelemente enthält, die Methode AddAt der Klasse ControlCollection verwenden, können Sie das Steuerelement viel genauer positionieren als mit der Methode Add, durch die das Steuerelement einfach nur am Ende der Sammlung angefügt wird. Im Codebeispiel würde die Verwendung der Methode Add dazu führen, dass die Ausgabe des hinzugefügten Beschriftungssteuerelements nach dem </html>-Schluss-Tag angezeigt wird. Dies ist kein optimaler HTML-Code und könnte zur fehlerhaften Darstellung der Seite in einigen Browsern führen. |
Validators | |
ValidatorCollection = Page.Validators | |
Gibt eine Instanz der Klasse ValidatorCollection zurück, die alle Validatorsteuerelemente in der angeforderten Seite enthält. Der Zugriff auf die einzelnen Validatorsteuerelemente ist durch Durchlaufen der ValidatorCollection-Sammlung möglich. |
|
Parameter
|
|
Beispiel | |
Das Codebeispiel zeigt ein Textfeldsteuerelement (Textbox) an, dem je ein Steuerelement RequiredFieldValidator und RegularExpressionValidator zugewiesen ist. Bei Page_Load durchläuft der Code die von der Eigenschaft Validators zurückgegebene ValidatorCollection und zeigt die Eigenschaften ID und ErrorMessage jedes Validators in der Sammlung an. |
|
<%@ Page Language="vb" %> <html> <head> <title></title> <script runat="server"> Sub Page_Load( ) Dim Validator as BaseValidator For Each Validator in Validators Message.Text &= Validator.ID & " error message: " Message.Text &= Validator.ErrorMessage & "<br/>" Next End Sub </script> </head> <body> <form runat="server"> Phone: <asp:textbox id="phone" runat="server"/> <asp:requiredfieldvalidator id="rfvPhone" controltovalidate="phone" display="dynamic" errormessage="Required!" runat="server"/> <asp:regularexpressionvalidator id="revPhone" controltovalidate="phone" display="dynamic" validationexpression="^[2-9]\d{2}-\d{3}-\d{4}$" errormessage="Enter a phone number in the form xxx-xxx-xxxx" runat="server"/> <br/> <asp:button id="submit" text="Submit" runat="server"/> </form> <br/> <asp:label id="Message" runat="server"/> </body> </html> |
|
Hinweise | |
Da nur solche Eigenschaften von Validatorsteuerelementen angezeigt werden, die vom Steuerelement BaseValidator (von dem sich alle Validatorsteuerelemente ableiten) vererbt wurden, ist es nicht erforderlich, vor dem Zugreifen auf die Eigenschaften den Validator auf einen speziellen Typ zu setzen. Wenn allerdings eine Eigenschaft angezeigt werden soll, die sich speziell auf den verwendeten Validatortyp bezieht (z. B. die Eigenschaft ValidationExpression der Klasse RegularExpressionValidator), muss das Steuerelement auf den korrekten Typ gesetzt werden. In Visual Basic .NET wird dazu das Schlüsselwort CType verwendet. |
DataBind | |
Page.DataBind( ) | |
Wertet Daten bindende Ausdrücke auf der Seite aus und löst sie auf. Diese Methode ruft auch DataBind für alle untergeordneten Steuerelemente auf. |
|
Parameter | |
Keine | |
Beispiel | |
Das folgende Codebeispiel verwendet einen Daten bindenden Ausdruck, um das Attribut ForeColor eines Beschriftungssteuerelement-Tags auf den Wert einer lokalen Variablen namens color zu setzen. Wenn die Methode DataBind in Page_Load aufgerufen wird, wird der Wert der Variablen Color dem Attribut ForeColor zugewiesen. (Dies ist im Grunde genommen das gleiche wie das Setzen der Eigenschaft ForeColor im Code.) |
|
<%@ Page Language="vb" %> <html> <head> <title></title> <script runat="server"> Dim Color As System.Drawing.Color = System.Drawing.Color.Red Sub Page_Load( ) Message.Text = "ForeColor is: " & Color.Name DataBind( ) End Sub </script> </head> <body> <asp:label id="Message" ForeColor="<%# Color %>" runat="server"/> </body> </html> |
|
Hinweise | |
Wenn Sie für ein bestimmtes Steuerelement auf der Seite, z. B. DataGrid oder DataList, Daten binden möchten, ist es unter Umständen effizienter, DataBind für dieses Steuerelement aufzurufen statt für die Seite: Der Aufruf für das Steuerelement vermeidet unnötigen Overhead bei Steuerelementen, für die das Binden von Daten nicht erforderlich ist. |
FindControl | |
Control = Page.FindControl(String) | |
Gibt eine Referenz auf das Steuerelementobjekt zurück, dessen Name dem angegebenenn Suchstring entspricht. Die Methode FindControl ist ein Mitglied der Basisklasse Control. |
|
Parameter
|
|
Beispiel | |
Der folgende Beispielcode sucht ein Steuerelement anhand seines Bezeichners und ändert seine Hintergrundfarbe: |
|
Sub Page_Load( ) Dim TheControl As Control = FindControl("Message") If Not TheControl Is Nothing Then Dim TheLabel As Label = CType(TheControl, Label) TheLabel.Text = "Found the label named Message!" TheLabel.BackColor = System.Drawing.Color.Blue End If End Sub |
|
Hinweise | |
Die Methode FindControl, die von der Klasse Control (von der sich die Klasse Page ableitet) vererbt wird, ist praktisch beim Umgang mit verschachtelten Steuerelementen oder Benutzersteuerelementen, die in der übergeordneten Seite ein Steuerelement manipulieren müssen. So kann beispielsweise Code in einem Benutzersteuerelement FindControl auf der Seite mit dem Benutzersteuerelement aufrufen, um ein Steuerelement innerhalb der Seite (aber außerhalb des Benutzersteuerelements) zu suchen und zu manipulieren. |
HasControls | |
Boolean = Page.HasControls( ) | |
Gibt einen Booleschen Wert zurück, der angibt, ob die Seite untergeordnete Steuerelemente enthält. |
|
Parameter
|
|
Beispiel | |
Das Codebeispiel zeigt eine Meldung an, die abhängig von dem von HasControls zurückgegebenen Wert angibt, ob die Seite Steuerelemente in ihrer Controls-Sammlung enthält: |
|
Sub Page_Load( ) If Page.HasControls = True Then Message.Text = "The page contains controls." Else Message.Text = "The page does not contain controls." End If End Sub |
LoadControl | |
objControl = Page.LoadControl(strPath) | |
Gibt eine Instanz des in der Benutzersteuerelementdatei strPath definierten Benutzersteuerelements zurück. Dies ermöglicht das dynamische Laden von Benutzersteuerelementen, so dass die Direktive @ Register nicht mehr verwendet werden muss. |
|
Parameter
|
|
Beispiel | |
Das Codebeispiel verwendet LoadControl zum Laden eines Benutzersteuerelements zur Laufzeit und fügt dieses zur Controls-Sammlung der Seite hinzu: |
|
Sub Page_Load( ) Dim Hello As UserControl = LoadControl("hello.ascx") Page.Controls.Add(Hello) End Sub |
|
Das Benutzersteuerelement hello.ascx sieht folgendermaßen aus: <h1>Hello, World!</h1> |
MapPath | |
String = Page.MapPath(virtualPath) | |
Gibt den physischen Pfad an, der einem bestimmten virtuellen Pfad entspricht. |
|
Parameter
|
|
Beispiel | |
Das Beispiel ordnet den virtuellen Pfad der benannten Seite ihrem physischen Pfad zu: |
|
Sub Page_Load( ) Message.Text = MapPath("MapPath.aspx") End Sub |
|
Hinweise | |
Die Methode Page.MapPath entspricht von der Funktionalität her der Methode Server.MapPath. |
ResolveUrl | |
String = Page.ResolveUrl(strRelativeUrl) | |
Gibt eine absolute URL zurück, die einer relativen URL entspricht. |
|
Parameter
|
|
Beispiel | |
Das Codebeispiel ordnet die relative URL einer absoluten URL zu: |
|
Sub Page_Load( ) Message.Text = Page.ResolveUrl("ResolveUrl.aspx") End Sub |
Validate | |
Page.Validate( ) | |
Ruft die Validierungslogik für jedes Validatorsteuerelement auf der Seite auf. Beim Aufruf dieser Methode durchläuft sie die Sammlung ValidatorCollection des Page-Objekts und führt für jedes Validatorsteuerelement die zugehörige Validierungslogik aus. |
|
Beispiel | |
Siehe das Beispiel für die Eigenschaft IsValid. |
|
Hinweise | |
Die Methode Validate wird automatisch aufgerufen, wenn der Benutzer auf eine HTML- oder ASP-Schaltfläche klickt, deren Eigenschaft CausesValidation True ist. |
Error | |
Sub Page_Error(Sender As Object, e As EventArgs)'error handling code End Sub | |
Das Ereignis Error wird ausgelöst, wenn ein nicht verarbeiteter Ausnahmefehler auf der Seite auftritt. Wenn für dieses Ereignis keine Ereignisbehandlungsroutine definiert ist, wird das Ereignis Application_Error ausgelöst. Wenn der Ausnahmefehler noch immer nicht verarbeitet ist, wird die Steuerung der bzw. den im Element <customErrors> in web.config definierten Seite(n) übergeben. |
|
Parameter
|
|
Beispiel | |
Im folgenden Codebeispiel wird bewusst ein Überlauf-Ausnahmefehler herbeigeführt, der dann in der Behandlungsroutine Page_Error verarbeitet wird, wobei der Text des Ausnahmefehlers angezeigt und anschließend gelöscht wird: |
|
Sub Page_Load( ) Dim x, y, overflow As Integer x = 1 y = 0 overflow = x / y End Sub Sub Page_Error( ) Response.Write(Server.GetLastError.ToString( )) Server.ClearError End Sub |
|
Hinweise | |
Der aktuelle Ausnahmefehler wird über die Methode GetLastError der Klasse Server abgerufen. Sobald die Fehlerverarbeitung abgeschlossen ist, können Sie den Ausnahmefehler wie im Beispiel gezeigt durch Aufruf von Server.ClearError löschen oder zulassen, dass der Ausnahmefehler auf die nächste Stufe der Fehlerverarbeitung gelangt. Die Argumente Sender und e sind für dieses Ereignis optional, wie auch aus dem Beispiel hervorgeht. Wenn das Attribut AutoEventWireup der Direktive @ Page auf True gesetzt ist (Standardeinstellung), ruft ASP.NET automatisch die Ereignisbehandlungsroutine für dieses Ereignis auf, vorausgesetzt es besitzt die korrekte Page_Error-Signatur. |
Init | |
Sub Page_Init(Sender As Object, e As EventArgs)'initialization code End Sub | |
Parameter
|
|
Beispiel | |
Das Codebeispiel initialisiert eine Variable zum Festlegen der Eigenschaft ForeColor einer Beschriftung in Page_Init und modifiziert anschließend diesen Wert, so dass die Eigenschaft ForeColor einer anderen Beschriftung in Page_Load gesetzt wird: |
|
<%@ Page Language="vb" %> <html> <head> <title>Init event example</title> <script runat="server"> Dim TheColor As System.Drawing.Color Sub Page_Init( ) TheColor = System.Drawing.Color.Red End Sub Sub Page_Load( ) Message.ForeColor = TheColor Message.Text = "The color of the text was set in Page_Init." TheColor = System.Drawing.Color.Blue Message2.ForeColor = TheColor Message2.Text = "The color of the text was set in Page_Load." End Sub </script> </head> <body> <asp:label id="Message" runat="server"/> <br/> <asp:label id="Message2" runat="server"/> </body> </html> |
|
Hinweise | |
Die Argumente Sender und e sind für dieses Ereignis optional, wie auch aus dem Beispiel hervorgeht. Wenn das Attribut AutoEventWireup der Direktive @ Page auf True gesetzt ist (Standardeinstellung), ruft ASP.NET automatisch die Ereignisbehandlungsroutine für dieses Ereignis auf, vorausgesetzt es besitzt die korrekte Page_Init-Signatur. |
Load | |
Sub Page_Load(Sender As Object, e As EventArgs)'code End Sub | |
Wird ausgelöst, wenn die Seite geladen wird. Da dieses Ereignis bei jeder Seitenanforderung ausgelöst wird, kann jeder beliebige Initialisierungscode hinzugefügt werden, der auf Seitenebene ausgeführt werden muss. Dazu gehört auch die Initialisierung der untergeordneten Steuerelemente der Seite. Wenn das Ereignis Load ausgelöst wird, kann auch auf die Daten zum Ansichtsstatus der Seite zugegriffen werden. Dem Ereignis Load werden von ASP.NET die folgenden Argumente übergeben:
|
|
Beispiel | |
Siehe das Beispiel für Init. |
|
Hinweise | |
Die Argumente Sender und e sind für dieses Ereignis optional, wie auch aus dem Beispiel hervorgeht. Wenn das Attribut AutoEventWireup der Direktive @ Page auf True gesetzt ist (Standardeinstellung), ruft ASP.NET automatisch die Ereignisbehandlungsroutine für dieses Ereignis auf, vorausgesetzt es besitzt die korrekte Page_Load-Ereignissignatur. |
Unload | |
Sub Page_Unload(Sender As Object, e As EventArgs)'cleanup code End Sub | |
Wird ausgelöst, wenn die Seite aus dem Speicher entladen wird. Da dieses Ereignis ausgelöst wird, bevor die Seite entladen wird, können Bereinigungsvorgänge durchgeführt werden, beispielsweise das Schließen offener Dateien oder Datenbankverbindungen. Dem Ereignis Unload werden von ASP.NET die folgenden Argumente übergeben:
|
|
Beispiel | |
Das Beispiel veranschaulicht das Ereignis Unload, indem eine Datei geschlossen wird, die zur Anzeige in der Ereignisbehandlungsroutine Page_Load geöffnet wurde: |
|
Dim TheFile As System.IO.StreamReader Sub Page_Load( ) TheFile = System.IO.File.OpenText(MapPath("Init.aspx")) Message.Text = "<pre>" & _ Server.HtmlEncode(TheFile.ReadToEnd( )) & "</pre>" End Sub Sub Page_Unload( ) TheFile.Close( ) End Sub |
|
Hinweise | |
Zwar eignet sich das Ereignis Unload zur Durchführung von Bereinigungsvorgängen auf Seitenebene, aber für Ressourcen wie Datenbanken, bei denen ein Ausnahmefehler die reguläre Seitenverarbeitung unterbrechen kann, kann es günstiger sein, den Bereinigungscode im Finally-Block einer Try...Catch...Finally-Anweisung zu platzieren. Dadurch wird sichergestellt, dass der Bereinigungscode immer ausgeführt wird. Weitere Informationen zu Try...Catch...Finally finden Sie in Kapitel 10. Die Argumente Sender und e sind für dieses Ereignis optional, wie auch aus dem Beispiel hervorgeht. Wenn das Attribut AutoEventWireup der Direktive @ Page auf True gesetzt ist (Standardeinstellung), ruft ASP.NET automatisch die Ereignisbehandlungsroutine für dieses Ereignis auf, vorausgesetzt es besitzt Page_Unload. |