ASP.NET 頁面事件執行順序 (轉)

 

申明,以下內容爲轉載,因某些原因作者和出處無法考證,本文作者不享有以下內容的版權。

 

客戶發出POST請求-〉創建Page派生類,調用構造函數-〉調用Page類的IHttpHandler.ProcessRequest方法-〉激活Page類的Init事件-〉調用Page類的CreateChildControls虛方法-〉從POST變量和VIEWSTATE中還原服務器端控件狀態-〉激活Page類的Load事件-〉激活服務器端控件事件-〉激活Page類的PreRender事件-〉調用Page類的Render虛方法-〉調用Page類的RenderChildren虛方法-〉發送HTTP響應給客戶端-〉激活Page類的Unload事件-〉丟棄Page派生類的實例。

Page 執行中將按照如下順序激活事件:

Page.PreInit
Page.Init
Page.InitComplite
Page.PreLoad
Page.Load
Page.LoadComplete
Page.PreRender
Page.PreRenderComplete

如果頁面從令一個頁面繼承,如BasePage:System.Web.UI.Page,在BasePage中做了一些擴展,如權限檢查,而其他頁面從BasePage繼承,則BasePage和最終Page的事件激活順序是:

UI.PreInit
Page.PreInit
UI.Init
Page.Init
UI.InitComplite
Page.InitComplite
UI.PreLoad
Page.PreLoad
UI.Load
Page.Load
UI.LoadComplete
Page.LoadComplete
UI.PreRender
Page.PreRender
UI.PreRenderComplete
Page.PreRenderComplete

如果使用了MasterPage,則MasterPage中的事件和ContentPage中的事件按照下面順序激活:

ContentPage.PreInit
Master.Init
ContentPage.Init
ContentPage.InitComplite
ContentPage.PreLoad
ContentPage.Load
Master.Load
ContentPage.LoadComplete
ContentPage.PreRender
Master.PreRender
ContentPage.PreRenderComplete

更進一步,如果ContentPage繼承BasePage,那麼,各事件的執行順序將變成:

UI.PreInit
ContentPage.PreInit
Master.Init
UI.Init
ContentPage.Init
UI.InitComplite
ContentPage.InitComplite
UI.PreLoad
ContentPage.PreLoad
UI.Load
ContentPage.Load
Master.Load
UI.LoadComplete
ContentPage.LoadComplete
UI.PreRender
ContentPage.PreRender
Master.PreRender
UI.PreRenderComplete
ContentPage.PreRenderComplete

 

MasterPage.master
UserControl_OnTop.ascx
Page.aspx
UserControl_InPage.ascx
UserControl_OnButtom.ascx

MasterPage UserControlOnTop Page UserControlInPage UserControlOnButtom
  Init      
      Init  
        Init
Init        
    Init    
    Load    
Load        
  Load      
      Lod  
        Load
ControlEvents ControlEvents ControlEvents ControlEvents ControlEvents
    PreRender    
PreRender        
  PreRender      
      PreRender  
        PreRender
  UnLoad      
      UnLoad  
        UnLoad
UnLoad        
    UnLoad    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章