Das serverseitige Programmiermodell erfordert ein neues Ablaufmodell bei
Seitenübergängen. ASP.NET geht in sei-nem Anwendungsmodell etwas weg von
clientbasierten Seitenübergängen und hin zu einem Modell, in dem ASPX-Seiten
ihre Angelegenheiten primär selbst regeln. Ein Seitenübergang von einer zur
nächsten Webseite erfolgt in ASP.NET so, dass zunächst die aktuelle Seite erneut
aufgerufen wird, damit die dort hinterlegten Ereignisbehand-lungsroutinen
ausgeführt werden können. Erst nachdem diese abgearbeitet wurden, erfolgt der
Aufruf der nächsten Seite. Dies bezeichnet man in ASP.NET als
Postback-Architektur.
Wenn ein <from>-Tag über das Attribut runat=server verfügt, wird ein
eventuell vorhandenes Action-Attribut im FORM-Tag ignoriert. Es wird immer die
aktuelle Seite selbst wieder aufgerufen, da sonst die
Ereignisbehandlungs-routinen gar nicht ausgeführt werden könnten. Natürlich ist
es dennoch notwendig, Konstrukte für den Seitenüber-gang nach einem Postback zu
haben, da man sonst immer nur auf einer Seite verbleiben oder aber dem Benutzer
durch einen Hyperlink clientseitig die Möglichkeit zur Navigation geben müsste.
ASP.NET bietet hierfür die gleichen Möglichkeiten mit client- und serverseitigem
Redirect – allerdings ist die Imple-mentierung anders als im klassischen ASP.
Ein tatsächlicher Seitenübergang muss im Programmcode explizit ausgedrückt
werden.
Dazu gibt es zwei Optionen:
- Serverseitiger Seitenübergang durch Übergabe der Programmkontrolle an die
nächste .aspx-Seite: Ser-ver.Transfer()
- Clientseitiger Seitenübergang durch Umleitung des Clients (Senden des
HTTP-Status-Codes 302 an den Client): Response.Redirect()
Die folgende Tabelle stellt die die Methoden
Response.Redirect() und Server.Transfer() gegenüber:
|
Response.Redirect() |
Server.Transfer() |
Sprung auf andere Seite innerhalb der Webanwendung
|
Ja |
Ja |
Sprung auf klassische ASP-Seite oder statische
HTML-Seite |
Ja |
Nein |
Sprung auf externe Seite |
Ja |
Nein |
Beteiligung des Clients |
Ja |
Nein |
Zusätzlicher Roundtrip |
Ja |
Nein |
Geschwindigkeit des Seitenübergangs |
Niedriger |
Höher |
Client sieht veränderte URL |
Ja |
Nein (erst nach einem Postback der
Folgeseite) |
Aufrufende Seite darf Ausgaben machen |
Nein (wenn Pufferung aktiviert, sind Ausgabebefehle
nicht schädlich, haben aber keine Wirkung) |
Ja, aufgerufene Seite wird angehängt. |
Abarbeitung des nachfolgenden Code vor dem
Seitenübergang |
Optional |
Nein |
Datenübergabe durch Querystring
|
Ja (Riskant!) |
Ja |
Datenübergabe durch Sitzungszustand
(Session-Variable)
|
Ja |
Ja |
Datenübergabe durch Objektverweis |
Nein |
Ja (Page.PreviousPage) |
Übergebene Daten für den Nutzer sichtbar |
Ja, bei Querystring. |
Nein |
Mögliches Ziel |
beliebige Ressourcen (auch .asp und .htm) |
Nur .aspx-Dateien |