了解ASP.NET Web Page的生命週期對於一個做WEB開發的工程師來說很有必要,尤其是用於編寫自己的control的時候。
ASP.NET Web Page的生命週期可以基本分為以下幾個階段:
1. Page request
本頁面被請求時發生在web page生命週期之前, 當有一個頁面被請求時,ASP.NET引擎要判斷這個頁面是否需要經過編譯或直接透過此頁面的緩衝版本直接發給請求者。
2. Start
在這一階段,Page的Request,Response,IsPostBack,UICulture 屬性被適當設定。
3. Page initialization
在此階段,每一個control的UniqueID屬性被設置,頁面的主題也被應用,如果此頁面是回傳頁面,即Page的IsPostBack屬性為true,那麼頁面裡各個的新的值和ViewState還沒有在此階段被恢復。
4. Load
在此階段,如果頁面是回傳頁面,擇頁裡各個控制項的新的值和ViewState將被恢復或設定。
5. Validation
在此階段,頁面中驗證控制項會呼叫自己的Validate方法進行驗證以便設定自己的IsValid屬性,因為驗證控制項是在客戶端和伺服器端都要進行驗證的。
6. Postback event handling
在此階段所有的委託事件將被調用,而我們所有的事件處理代碼是在此時被調用的。
7. Rendering
在此階段Page呼叫每個控制項的Render方法將各個控制項對應的html文字流寫到Response的OutputStream屬性中,在此階段之前,每個控制項將再次儲存各自的ViewState,因此我們還是有最後一次機會在Page的PreRender方法中改變控制項的ViewState屬性的。
8. Unload
在此階段,當初為Page及每個控制建立的實體都將被刪除,資源被釋放。