標籤:http 使用 資料 工作 os 類
1.初始化 在此階段主要完成兩項工作:一、初始化在傳入Web請求生命週期內所需的設定;二、跟蹤檢視狀態。首先,頁面架構通過預設引發Init事件,並調用OnInit()方法,控制項開發人員可以重寫該方法為控制項提供初始化邏輯。此後,頁面架構將調用TrackViewState方法來跟蹤檢視狀態。需要注意的是:多數情況下,Control基類提供的TrackViewState方法實現已經足夠了。只有子控制項定義了複雜屬性時,開發人員才可能需要重寫該方法。
2.載入檢視狀態 此階段的主要任務是檢查伺服器控制項是否存在以及是否需要將其狀態恢複到它在處理之前的請求結束的狀態。因此該過程發生在頁面回傳過程中,而不是初始化請求過程。在此階段,頁面架構將自動回復ViewState字典。如果伺服器控制項不維持其狀態,或者它有能力通過預設儲存其所有狀態而使用ViewState字典,那麼開發人員擇不必實現任何邏輯。針對那些無法在ViewState字典中儲存的資料類型或者需要自訂狀態管理的情況,開發人員可以通過重寫LoadViewState方法來自訂狀態的恢複和管理。
3.處理回傳資料 若要使控制項檢測用戶端發回的表單資料,那麼必須實現System.Web.UI.IpostBackDataHandler介面的LoadPostData()方法。因此只有處理回傳資料的控制項參與此階段。
4.載入 至此階段開始,控制項樹中的伺服器控制項已建立並初始化、狀態已還原並且表單控制項反映了用戶端的資料。此時,開發人員可以通過重寫OnLoad()方法來實現每個請求共同的邏輯。
5.發送回傳更改通知 在此階段,伺服器控制項通過引發事件作為一種訊號,表明由於回傳而發生的控制項狀態變化(因此該階段用於回傳過程)。為了建立這種訊號,開發人員必須再次使用System.Web.UI.IpostBackDataHandler介面,並實現另一方法RaisePostBackChangeEvent()。其過程為:如果控制項狀態因回傳而更改,則LoadPostData()返回true;否則返回false。頁面架構跟蹤所有返回true的控制項並在這些控制項上調用RaisePostDataChangedEvent()。
6.處理回傳事件 該階段處理引起回傳的用戶端事件。為了便於將用戶端事件映射到伺服器端事件上進行處理,開發人員在此階段可以通過實現System.Web.UI.IpostBackEventHandler介面的RaisePostBackEvent()方法來實現該邏輯。由此途徑,伺服器控制項將成功捕獲回傳的用戶端事件進行伺服器端的相應處理。
7.預呈現 該階段完成在產生控制項之前所需要的任何工作。通常情況下是通過重寫OnPreRender()方法完成該工作。需要注意的是:在該階段,可以儲存在預呈現階段對控制項狀態所做的更改,而在呈現階段進行的更改則會丟失。
8.儲存狀態 如果伺服器控制項不維持狀態,或者它有能力通過預設儲存其所有狀態而使用ViewState字典,那麼開發人員不必在該階段實現任何邏輯。因為這個儲存狀態的過程是自動的。如果伺服器控制項需要自訂狀態儲存,或者控制項無法在ViewState字典中儲存特殊資料類型,則需要通過重寫SaveViesState()來實現狀態儲存。
9.呈現 表示向HTTP輸出資料流中寫入標記文本的過程。開發人員通過重寫Render()方法使其在輸出資料流自訂標籤文本。
10.處置 在此階段中,通過重寫Dispose()方法完成釋放對昂貴資源的引用,如資料庫連結等。
11.卸載 完成的工作與上一階段相同,但是開發人員通常在Dispose()方法中執行清除,而不是處理Unload事件。