Damit die serverseitigen Ereignisse abgearbeitet werden können, wird im Webforms-Programmiermodell bei einem Postback immer wieder die gleiche Seite selbst aufgerufen. In Webforms gibt es daher in serverseitigen <Form>-Tags kein Action-Attribut. Das Action-Attribut anzugeben hätte keine Wirkung. Auch bei einigen Formen von Hyperlinks wird (unter Einsatz von Client-Skripten) zunächst die aktuelle Seite erneut aufgerufen. Daher spricht man bei ASP.NET-Webforms auch von einer Postback-Architektur.

Abbildung 4.5    Seitenübergänge im Webforms-Programmiermodell

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: Server.Transfer()
  • Clientseitiger Seitenübergang durch Umleitung des Clients (Senden des HTTP-Status-Codes 302 an den Client): Response.Redirect()

Für eine ausführliche Diskussion der Unterschiede sei auf [DOTNET04] verwiesen.

Cross-Page-Postbacks:

Während in ASP.NET 1.x ein Postback immer auf dieselbe Seite erfolgt, unterstützt ASP.NET seit Version 2.0 zusätzlich sogenannte Cross-Page-Postbacks. Jedes Schaltflächen-Steuerelement (<asp:Button>, <asp:ImageButton> und <asp:LinkButton>) darf im Attribut PostBackUrl auf eine beliebige Seite verweisen.

<asp:Button ID=”C_Absenden” Runat=”server” Text=”Absenden”
PostBackUrl=”~/Global/FormularEinsenden.aspx” />

Aus der Sicht des Clients wird diese Funktion durch eine JavaScript-Funktion (WebForm_DoPost­Back­WithOptions()) realisiert. Die Zielseite kann über Page.PreviousPage auf die Daten aus der Ursprungsseite zugreifen.

Inhalt dieses Kapitels:


<< Ereignisbehandlung Trennung von Layout und Programmcode >>