Page_Load Page_Init方法使用原理(转)
PreInit (2.0)
->初始化Theme,應(yīng)用MasterPage和控件Skin
->Init
->InitComplete (2.0)
->If PostBack,創(chuàng)建子控件并加載控件/視圖狀態(tài)
->PreLoad (2.0)
->Load
->If PostBack,則觸發(fā)服務(wù)器端事件
->LoadComplete (2.0)
->If not PostBack,則創(chuàng)建子控件
->PreRender
->PreRenderComplete (2.0)
->保存控件/視圖狀態(tài)
->SaveStateComplete (2.0)
->Render
->Unload
需要注意的是上圖中標(biāo)注(2.0)的事件即ASP.NET 2.0中新增的事件都僅僅是Page類中可以使用,并不是像其他事件一樣可以在控件中使用。
ASP.NET 2.0中可以通過啟用(默認(rèn)值為True)AutoEventWireUp為網(wǎng)頁事件創(chuàng)建事件處理程序,并使用隱式為事件處理程序注冊的方法名。
以下是VS2005隱式為各個事件添加關(guān)聯(lián)的方法:
事件-> 方法名
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基類會在請求的開頭階段調(diào)用基類TemplateControl的HookUpAutomaticHandlers方法。該方法遍歷上表中所示的方法名,并使用反射在程序員的類中查找具有相同名稱和合適特征標(biāo)的方法。如果找到合適的方法,則創(chuàng)建一個類型合適的委托,并使用該方法初始化它,并將其加入委托列表,該委托在相應(yīng)事件發(fā)生時候?qū)⒈挥|發(fā)。
這些事件都是由基類Page的一個虛方法或者Page類從基類Control繼承的虛方法觸發(fā)。所以可以有三種方法注冊這些事件:(以Load事件為例)
1、顯式的將一個委托和一個事件關(guān)聯(lián)起來(通常都是在網(wǎng)頁的Init處理程序中)
2、編寫一個名為Page_Load的方法,并使其特征標(biāo)和事件相同
3、重寫Override虛方法Onload
這個三個方法中重寫Override比較快一點點,但是VS2005默認(rèn)是第二種。
轉(zhuǎn)載于:https://www.cnblogs.com/zhaobl/archive/2008/06/20/1227113.html
總結(jié)
以上是生活随笔為你收集整理的Page_Load Page_Init方法使用原理(转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。