上個系列中介紹了頁面生命周期的整體流程,可能有些讀者還想更進一步了解整個生命周期的細節,限於篇幅我不可能講到所有細節,也沒必要,這裡僅舉幾個例子,大家可以通過這幾個例子學習一下頁面生命周期的研究方式。
Control類中有如下事件
// 當服務器控件綁定到數據源時發生。
public event EventHandler DataBinding;
// 當從內存釋放服務器控件時發生,這是請求 ASP.NET 頁時服務器控件生存期的最後階段。
public event EventHandler Disposed;
// 當服務器控件初始化時發生;初始化是控件生存期的第一步。
public event EventHandler Init;
// 當服務器控件加載到 System.Web.UI.Page 對象中時發生。
public event EventHandler Load;
// 在加載 System.Web.UI.Control 對象之後、呈現之前發生。
public event EventHandler PreRender;
// 當服務器控件從內存中卸載時發生。
public event EventHandler Unload;
因為每個Page和絕大多書控件都是繼承於這個Control類,所以他們都可以注冊這些事件,如果我們提供了相應名字的方法,ASP.NET在編譯時會幫我們注冊相應的方法到事件中,比如我們如果在頁面中寫了如下方法
protected void Page_Init(object sender, EventArgs e) { Trace.Write("Page_Init"); }
那ASP.NET在編譯時會將這個方法注冊到Control類的Init事件中,也就是當頁面初始化的時候就會調用這個Page_Init方法。我們右鍵Page類“選轉到定義”菜單可以看到Page的定義,這個定義中還有些事件
// 在頁初始化完成時發生。
public event EventHandler InitComplete;
// 在頁生命周期的加載階段結束時發生。
public event EventHandler LoadComplete;
// 在頁初始化開始時發生。
public event EventHandler PreInit;
// 在頁 System.Web.UI.Control.Load 事件之前發生。
public event EventHandler PreLoad;