2012年7月19日 星期四

{Knowledge} Page Life Cycle

八個階段:
  Page發出Request
  初始化
  載入網頁
  驗証
  事件
  顯示頁面
  缷載

初始化(Page Initialization)階段會觸發--Page物件的PreInit、Init、InitComplete事件
載入網頁(Loading)階段會觸發--ProLoadLoadLoadComplete
事件(Event) 階段會觸發--有PostBack的控制項事件
顯示頁面(Render) 階段會觸發--PreRenderRender
缷載(Unload) 階段會觸發--Unload


圖出處:http://msdn.microsoft.com/en-us/library/ms972976.aspx

每一事件的大致功能
Preinit
1.可檢查IsPostBack屬性判斷是否第一次處理網頁
2.建立動態控制項、建立MasterPage;其動態控制項其值,因ViewState未還原,值之後可被覆寫

ProLoad
1.已將ViewState 載入,可使用Control的屬性

Load
1.遞迴每個子控制項執行相同的動作,設定Control屬性,也可建立與DB的連接

有PostBack的控制項事件
1.驗證(Validation)資料有沒有問題(使用者輸入資料、或資料來源的資料)--避免垃圾資料
2.Control Event對應
3.也可重新Bind資料

Load Complete
1.也可在此重新整頁面資料

PreRender
1.覆寫控制項屬性

SaveStateComplete
1.這是頁面呈現給要求瀏覽器之前的最後一個引發事件--msdn
2.此時ViewState的資料已被觸發此事件前儲存

Render
繪圖畫面


參考資料:
http://www.dotblogs.com.tw/hatelove/archive/2009/12/18/pagelifecycle.aspx
http://msdn.microsoft.com/zh-tw/library/ms178472.aspx
http://www.dotblogs.com.tw/marcus116/archive/2011/05/24/25923.aspx
http://msdn.microsoft.com/en-us/library/ms972976.aspx