天天看點

ASP.NET頁面生命周期正常頁生命周期階段生命周期事件

階段

說明

頁請求

頁請求發生在頁生命周期開始之前。使用者請求頁時,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 方法),則該頁将引發異常。

繼續閱讀