網頁的生命週期列表:
PreInit (2.0)
->初始化Theme,應用MasterPage和控件Skin
->Init
->InitComplete (2.0)
->If PostBack,創建子控件並加載控件/視圖狀態
->PreLoad (2.0)
->Load
->If PostBack,則觸發服務器端事件
->LoadComplete (2.0)
->If not PostBack,則創建子控件
->PreRender
->PreRenderComplete (2.0)
->保存控件/視圖狀態
->SaveStateComplete (2.0)
->Render
->Unload
需要注意的是上圖中標註(2.0)的事件即ASP.NET 2.0中新增的事件都僅僅是Page類中可以使用,並不是像其他事件一樣可以在控件中使用。
ASP.NET 2.0中可以通過啓用(默認值爲True)AutoEventWireUp爲網頁事件創建事件處理程序,並使用隱式爲事件處理程序註冊的方法名。
以下是VS2005隱式爲各個事件添加關聯的方法:
事件-> 方法名
Page.PreInit -> Page_PreInit
Control.Init -> Page_Init
Page.InitComplete -> Page_InitComplete
Page.PreLoad -> Page_PreLoad
Control.Load -> Page_Load
Page.LoadComplete -> Page_LoadComplete
Control.PreRender -> Page_PreRender
Control.DataBinding -> Page_DataBind
Page.PreRenderComplete -> Page_PreRenderComplete
Page.SaveStateComplete -> Page_SaveStateComplete
Control.Unload -> Page_Unload
TemplateControl.Error -> Page_Error
TemplateControl.AbortTransation -> Page_AbortTransation
TemplateControl.AbortTransation -> OnTransationAbort
TemplateControl.CommitTransation -> Page_CommitTransation
TemplateControl.CommitTransation -> OnTransationCommit
Page基類會在請求的開頭階段調用基類TemplateControl的HookUpAutomaticHandlers方法。該方法遍歷上表中所示的方法名,並使用反射在程序員的類中查找具有相同名稱和合適特徵標的方法。如果找到合適的方法,則創建一個類型合適的委託,並使用該方法初始化它,並將其加入委託列表,該委託在相應事件發生時候將被觸發。
這些事件都是由基類Page的一個虛方法或者Page類從基類Control繼承的虛方法觸發。所以可以有三種方法註冊這些事件:(以Load事件爲例)
1、顯式的將一個委託和一個事件關聯起來(通常都是在網頁的Init處理程序中)
2、編寫一個名爲Page_Load的方法,並使其特徵標和事件相同
3、重寫Override虛方法Onload
這個三個方法中重寫Override比較快一點點,但是VS2005默認是第二種