ASP.NET網頁生命週期事件

網頁事件

典型的使用方式

PreInit

PreInit事件是網頁生命週期中非常早期的一個事件,在PreInit事件觸發之後,就會加載用戶設置信息與網頁主題。我們通常使用PreInit事件來執行下列處理:

1)  檢查IsPostBack屬性,來確認網頁是否爲第一次被處理

2)  創建或重新創建動態控件

3)  動態設置一個母板頁

4)  動態設置Theme屬性

5)  讀取或設置用戶設置文件屬性值

注意:如果請求是一個回發,控件屬性值還不會從視圖狀態中取回,如果此時您設置一個控件屬性,其值可能會在下一個事件中被重寫

Init

在所有的控件都已經被初始化,而且所有的面板設置都已經應用之後,就會觸發Init事件。您可以使用此事件來讀取或初始化控件屬性。

InitComplete

此事件由Page對象觸發。當網頁初始化完成之後,就會觸發此事件

PreLoad

如果您希望在Load事件觸發之前,針對您的網頁或控件執行一些處理,就可以使用此事件。在Page觸發此事件之後,它會加載它本身與所有控件的視圖狀態,然後處理Request實例的回發數據。

Load

Page會調用Page上的Load事件處理例程,然後按照順序爲每一個子控件執行相同的操作,知道網頁與所有控件被加載爲止。我們通常會用Load事件來設置控件的屬性並創建數據庫連接。

控件事件

我們通常使用控件的各個事件來完成各項互動操作,比方說,我們使用Button控件的Click事件來完成用戶單擊按鈕時所要執行的操作。

注意:在一個回發請求中,如果網頁包含驗證控件,則在執行任何處理之前,會先檢查Page與個別驗證控件的IsValid屬性。

LoadComplete

在網頁上所有其他控件都已經被加載之後,要執行的處理就可以通過此事件來完成。

PreRender

在控件已經被加載但是還沒有解釋之前,就會觸發此事件。在此事件之前會執行下列操作:

1)  Page對象會調用網頁與每一個控件的EnsureChildControls方法

2)  DataSourceID屬性被設置的數據綁定控件會調用其DataBind方法。

網頁上的每一個控件都會觸發PreRender事件。您可以利用它對網頁或其它控件的內容做最後的更改。

SaveStateComplete

在已經爲網頁和網頁上的所有控件保持了視圖狀態與控制狀態信息後,就會觸發此事件。此時對網頁與控件所做的任何更改都會忽略。

如果您的操作是要在視圖狀態被保存之後才執行,則非常適合用SaveStateComplete事件,但是請不要對控件進行任何更改。

Render

Render不是一個事件,而是一個方法。在此階段,Page對象會調用每一個控件的Render方法。所有的ASP.NET服務器控件都擁有一個Render方法,它會輸出要傳送給瀏覽器的控件標記。當我們創建一個自定義控件時,通常會重寫Render方法來控制輸出的標的。而且,如果您的自定義控件僅僅是標準的ASP.NET服務器控件,而沒有任何的自定義標記,則不需要重寫Render方法。

Unload

每一個控件的Unload事件被觸發後,纔會觸發網頁的Unload事件。對於控件而言,我們會使用此事件爲特定的控件進行最後的清理工作。比方說,關閉某控件所使用的數據庫連接。對於網頁本身而言,同樣會使用此事件來進行最後的清理工作,比方說,關閉已打開的文件與數據庫連接、完成寫入記錄操作等。

注意:在卸載這個階段,網頁與其他控件已經被解釋,因此您不能對象應數據流做進一步更改。如果您嘗試調用Response.Write方法,網頁將會拋出異常。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章