Noch etwas zum Page Lifecycle in ASP.NET

Mir fiel vor kurzem auf, dass der Load-Event einer ASP.NET-Seite im Postback-Fall vor dem Abarbeiten der Events der Controls (z.B. Button.Click) ausgeführt wird. Demzufolge eignet sich Page.Load nicht immer dazu, die Seite zu initialisieren, da unter Umständen bestimmte Werte bestimmter Membervariablen noch garnicht geändert sind. Ich habe daraufhin einen Blick auf den Lifecycle der Page geworfen und entdeckt, dass der PreRender-Event der Seite viel besser geeignet ist, die Seite zu initialisieren, da zu diesem Zeitpunkt alle anderen Events abgearbeitet sind. Ich habe daraufhin den Event mit einer eigenen Menthode (analog zu Page_Load) registriert. Wenn man nun z.B. einen Button klickt, reicht es, im Eventhandler der Buttons bestimmte Werte zu verändern. Der PreRender-Event der Seite überimmt dann die Ausgabe im UI.

2 Comments


  1. Ich bin mir da nicht so sicher ob das so gut ist, da deine Events vielleicht den Baum der Controls schon benötigen.

    Besser in OnLoad den Baum erstellen und im Click-Event verändern bzw. neu Erstellen.

    Zum Erstellen von Controls ist sogar CreateChildControls besser wie Page_Load

    Quote | Posted 17.01.2008, 13:15

  2. Hallo Andi,

    ich denke, dass wir verschiedene Anforderungen vor Augen haben.

    Um ein Beispiel zu meinem Ansatz zu geben:

    Wenn ein Label auf der Seite den Inhalt einer Sessionvariablen anzeigen soll, man diese Sessionvariable aber mit einem Button auf der Seite ändern kann, dann muss der Click-Event des Buttons vor dem Code stehen, der den Inhalt der Session-Variablen anzeigt.

    Hier käme also der Code, um die Sessionvariable zu ändern nach Button.Click und die Ausgabe ins Label nach Page.PreRender.

    Ich kenn dich doch von Glengamoi … war aber schon lange nicht mehr “anwesend” …

    Gruß

    Markus

    Quote | Posted 17.01.2008, 13:44

Leave a reply