階段
說明
頁請求
頁請求發生在頁生命周期開始之前。使用者請求頁時,ASP.NET 将确定是否需要分析和編譯頁(進而開始頁的生命周期),或者是否可以在不運作頁的情況下發送頁的緩存版本以進行響應。
開始
頁初始化
加載
加載期間,如果目前請求是回發請求,則将使用從視圖狀态和控件狀态恢複的資訊加載控件屬性。
驗證
回發事件處理
如果請求是回發請求,則将調用所有事件處理程式。
呈現
解除安裝
完全呈現頁并已将頁發送至用戶端、準備丢棄該頁後,将調用解除安裝。此時,将解除安裝頁屬性(如 Response 和 Request)并執行清理。
在頁生命周期的每個階段中,頁将引發可運作您自己的代碼進行處理的事件。對于控件事件,通過以聲明方式使用屬性(如 onclick)或以使用代碼的方式,均可将事件處理程式綁定到事件。
頁事件
典型使用
<a href="http://msdn.microsoft.com/zh-cn/library/system.web.ui.page.preinit(v=VS.80).aspx">PreInit</a>
使用該事件來執行下列操作:
檢查 IsPostBack 屬性來确定是不是第一次處理該頁。
建立或重新建立動态控件。
動态設定主要頁。
讀取或設定配置檔案屬性值。
注意
如果請求是回發請求,則控件的值尚未從視圖狀态還原。如果在此階段設定控件屬性,則其值可能會在下一事件中被重寫。
<a href="http://msdn.microsoft.com/zh-cn/library/system.web.ui.control.init(v=VS.80).aspx">Init</a>
在所有控件都已初始化且已應用所有外觀設定後引發。使用該事件來讀取或初始化控件屬性。
<a href="http://msdn.microsoft.com/zh-cn/library/system.web.ui.page.initcomplete(v=VS.80).aspx">InitComplete</a>
<a href="http://msdn.microsoft.com/zh-cn/library/system.web.ui.page.preload(v=VS.80).aspx">PreLoad</a>
在 Page 引發該事件後,它會為自身和所有控件加載視圖狀态,然後會處理 Request 執行個體包括的任何回發資料。
Load
使用 OnLoad 事件方法來設定控件中的屬性并建立資料庫連接配接。
控件事件
<a href="http://msdn.microsoft.com/zh-cn/library/system.web.ui.page.loadcomplete(v=VS.80).aspx">LoadComplete</a>
對需要加載頁上的所有其他控件的任務使用該事件。
<a href="http://msdn.microsoft.com/zh-cn/library/system.web.ui.control.prerender(v=VS.80).aspx">PreRender</a>
在該事件發生前:
頁上的每個控件都會發生 PreRender 事件。使用該事件對頁或其控件的内容進行最後更改。
<a href="http://msdn.microsoft.com/zh-cn/library/system.web.ui.page.savestatecomplete(v=VS.80).aspx">SaveStateComplete</a>
使用該事件執行滿足以下條件的任務:要求已經儲存了視圖狀态,但未對控件進行任何更改。
Render
這不是事件;在處理的這個階段,Page 對象會在每個控件上調用此方法。所有 ASP.NET Web 伺服器控件都有一個用于寫出發送給浏覽器的控件标記的 Render 方法。
使用者控件(.ascx 檔案)自動合并呈現,是以不需要在代碼中顯式呈現該控件。
<a href="http://msdn.microsoft.com/zh-cn/library/system.web.ui.control.unload(v=VS.80).aspx">Unload</a>
該事件首先針對每個控件發生,繼而針對該頁發生。在控件中,使用該事件對特定控件執行最後清理,如關閉控件特定資料庫連接配接。
對于頁自身,使用該事件來執行最後清理工作,如:關閉打開的檔案和資料庫連接配接,或完成日志記錄或其他請求特定任務。
在解除安裝階段,頁及其控件已被呈現,是以無法對響應流做進一步更改。如果嘗試調用方法(如 Response.Write 方法),則該頁将引發異常。