標籤:pos 開發 儲存 保護 沒有 編程方式 應用程式 狀態 遞迴調用
處理過回傳事件之後,頁面便為瀏覽器產生輸出做好了準備。呈現階段分為兩部分:預呈現和標記產生。預呈現這個子階段有兩個事件表徵,分別為:預先處理和投遞處理。
PreRender事件
通過處理該事件,頁面和控制項能夠進行產生輸出前的不論什麼更改。頁面會首先引發自己的PreRender事件。然後按遞迴方式引發全部的子控制項。注意,這時的頁面已確保其全部子控制項都被建立。
對於群組控制項來說。該階段尤為重要。
PreRenderComplete事件
因為全部子控制項的PreRender事件會以遞迴方式逐一被調用,因而頁面設計者無法知道預呈現階段是否已經完畢。為此,asp.net2.0版本號碼引入了一個僅僅針對頁面的新事件。即PreRenderComplete事件。
SaveStateComplete事件
在每一個控制項被呈現輸出,為頁面產生標記前的一段時間裡。要將當前頁面的狀態儲存在檢視狀態介質中。
值得一提的是,在該點之後對狀態做的不論什麼更改可能會被呈現,但不會被儲存,且在下一次回傳時無法獲得恢複。頁面狀態儲存是一個遞迴的過程,頁面處理常式會遍曆整個頁面樹,逐一調用每一個控制項的SaveViewState方法。包含頁面自身的。
SaveViewState是受保護的虛擬方法(能夠重寫),負責儲存當期控制項的ViewState字典內容。
還有還有一種狀態類型。即所謂的“控制項狀態”,控制項狀態是一種私人的狀態。不受應用程式控制項支配。換句話說,控制項的控制項狀態不可以像檢視狀態一樣。以編程方式被禁用。控制項狀態在此時也會被儲存。
他是還有一種狀態狀態儲存機制,與檢視狀態類似,其資料也可以用於維護頁間回傳,但控制項狀態的目的是,維護控制項的必要資訊,以便使其正常工作。也就是說。具有狀態行為的屬性資料應儲存在控制項狀態中,而使用者介面屬性資料(如控制項的內容)應儲存在檢視狀態中。
標記的產生
針對瀏覽器的標記產生。會分別由每一個子控制項自己完畢,產生的標記會被儲存到一個緩衝中。有幾個重寫方法會協助開發人員分別標記產生的階段進行控制--開始標籤、主體和結束標籤。
沒有與該階段相關聯的使用者事件。
Unload事件
呈現階段之後會進行一次遞迴調用,引發每一個控制項的Unload事件,最後是頁面自身的。
Unload事件用於在頁面對象被釋放前。運行終於的清理工作。一般的操作作為檔案和資料庫連結的關閉。
注意,卸載通知會在頁面或控制項正要被卸載且尚未被釋放前到大。對於實際的頁面,重寫Page類的Dispose方法。或僅僅處理頁面的Disposed事件,是在它從記憶體中被釋放前做清理工作的最後機會 。頁面處理常式會調用Dispose方法,釋放頁面對象。在對Unload事件處理常式的遞迴調用完成之後,會被馬上引發。
asp.net頁面生命週期之頁面的終結階段