Page Life-Cycle Events

Page Eventwann ausgelöst?Verwendung
PreInitNachdem das Request- und das Response-Objekt initialisiert worden sind und auch evaluiert worden ist, ob es sich um ein PostBack handelt, aber vor der Initialisierung der Controls.
  • Erzeugung dynamischer Controls,
  • Setzen eines Themes,
  • Dynamisches Setzen einer Masterpage
InitNachdem alle Controls initialisiert worden sind und die Skin-Settings angewendet worden sind.
Die Init-Events der Controls werden vor dem Init-Event der Page ausgelöst.
Zum Lesen oder Setzen von Control-Properties
InitCompleteZwischen Init und InitComplete liegt das Einschalten des ViewState-Trackings.
  • Das ist die richtige Stelle, um am ViewState etwas zu verändern, zum Beispiel das Enablen fürs nächste PostBack
PreLoadwird ausgelöst, nachdem

  • der ViewState für die Seite selbst und für alle Controls geladen wurde
  • und nachdem die PostBack-Daten ausgeführt worden sind
LoadWird aufgeruden, bevor das Load-Event aller auf der Seite enthaltenen Controls aufgerufen wird
  • Überprüfung, ob alle Validatoren erfolgreich waren (Page.IsValid)
  • Setzen von Controls-Eigenschaften
  • Aufbauen von Datenbank-Verbindungen und manuelles Auslesen von Daten aus der Datenbank, wenn es kein PostBack ist
  • Wiederherstellen von Control-Eigenschaften z.B. aus dem ViewState im Falle von PostBack
Control EventsButton Click oder TextBox TextChanged …Hier sollte im Falle eines PostBacks auch geprüft werden, ob alle Validation-Controls erfolgreich waren und die IsValid-Eigenschaft der Page true ist.
LoadCompleteNachdem alle Events abgearbeitet worden sind.Aufgaben, für die es notwendig ist, dass alle Controls vollständig geladen sind.
PreRenderWird zuerst für die Seite und danach für alle Controls aufgerufen, bevor die Seite wirklich gezeichnet wird.Hier sollten alle Veränderungen umgesetzt werden, die das Aussehen der Seite beeinflussen, vor allem inhaltlicher Natur.
PreRenderCompleteZwischen PreRender und PreRenderComplete werden die DataBind-Methoden der Controls aufgerufen.DataBind eines Controls wird immer vor dem tatsächlichen Binding aufgerufen. Daher besteht in DataBind die Möglichkeit, die Datenbefüllung zu beeinflussen.
SaveStateCompleteSchreiben des ViewState. Alle späteren Änderungen haben keinen Einfluss mehr auf das nächste PostBack und werden nicht mehr gesichert.
RenderEigentlich kein Event, sondern eine Methode, die für alle Custom Controls oder für die Seite überschrieben werden kann.Diese Methode sollte dann überschrieben werden, wenn der resultierende Markup-Code vom Standardverhalten abweichen soll.
Beispiel: Darstellung einer CheckBox als ja/nein-Feld.
UnloadWird zuerste für alle Controls und zuletzt für die Seite selbst aufgerufen.Freigeben lokaler Ressourcen, zum Beispiel geöffnete Files, oder Datenbankverbindungen.
Sollte immer möglichst lokal umgesetzt werden (Control vs. Page)

Generell ist wichtig, immer alle Operationen so nahe wie möglich am Entstehungsort auszuführen. Besitzt beispielsweise ein Custom Control eine Eigenschaft, sollten alle Veränderungen, die diese Eigenschaft betreffen, im Custom Control umgesetzt werden, solange diese Änderungen allgemeingültig sind.

Init und Unload werden für Controls VOR dem Init und Unload der Page ausgeführt (in umgekehrter Reihenfolge, das heißt für das letzte Element im Container zuerst) und Load wird für alle Controls NACH dem Load der Page ausgeführt (und zwar Top-Down).

Weitere Ressourcen zum detaillierten Nachlesen:

http://msdn.microsoft.com/en-us/library/aa719775(vs.71).aspx
http://msdn.microsoft.com/en-us/library/ms178472.aspx
http://msdn.microsoft.com/en-us/library/wf922ts9(vs.71).aspx

Ist doch cool, oder?

LG,
Sabine.