ASP.NET2.0網頁的生命週期

網頁的生命週期列表:

  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默認是第二種

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章