asp.net常规页生命周期阶段列表和事件列表
生活随笔
收集整理的這篇文章主要介紹了
asp.net常规页生命周期阶段列表和事件列表
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
當我們使用asp.net開發網站,每運行一個頁面,這個頁面都將經歷一個生命周期。了解頁的生命周期非常重要,因為這樣我們才能在合適的生命周期編寫代碼實現預期效果。網上有一句話概括非常精辟:"Do the right thing at the right time in the right place."。微軟的文檔給出的ASP.NET生命周期如下:
1?Page?Request??--頁面請求
2?Start??--開始
3?Page?Initialization?--頁初始化
4?Load??--加載
5?Validation?--驗證
6?Postback?event?handling?--回發事件處理
7?Rendering?--呈現
8?Unload??--卸載 一、生命周期階段列表
下面來看看每個階段對應的具體說明:
1、頁請求
頁請求發生在頁生命周期開始之前。用戶請求頁時,asp.net將確定是否需要分析和編譯頁,或者是否可以在不運行頁的情況下,發送緩存版本以進行響應。
2、開始
在開始階段,將設置頁屬性,如Request和Response。在此階段,頁還將確定請求是回發請求還是新請求,并設置ispostback屬性。此外,在開始階段期間,將設置頁的UICulture屬性。
3、頁初始化
該階段,可以使用頁中的控件,并將設置每個控件的UniqueID屬性。此外,任何主題都將應用于頁。如果當前請求是回發請求,則回發數據尚未加載,并且控件屬性值尚未還原為視圖狀態中的值。
4、加載
該階段,如果當前請求是回發請求,則將使用從視圖狀態和控件狀態恢復的信息加載控件屬性。
5、驗證
在驗證期間,將調用所有驗證控件的Validate方法,此方法將設置各個驗證程序控件和頁的IsValid屬性。
6、回發事件處理
如果請求是回發事件,則將調用所有事件處理程序。
7、呈現
在呈現期間,視圖狀態將被保存到頁,然后頁將調用每個控件,以將其呈現的輸出提供給頁的Response屬性的OutPutStream。
8、卸載
完全呈現頁將頁發送至客戶端并準備丟棄時,將調用卸載。此時,將卸載頁屬性如Request,Response等,并進行清理。
二、生命周期事件列表(常見)
1、Page_PreInit
典型應用:
? 使用IsPostBack屬性確定是否是第一次處理該頁;
? 創建或者重新創建動態控件;
? 動態設置母版頁;
? 動態設置Theme屬性;
? 讀取或者設置配置文件屬性值。
注意:如果請求是回發請求,則控件的值尚未從視圖狀態還原。如果在此階段設置控件屬性,則值可能會在下一階段被改寫。
2、Page_Init
典型應用:
? 讀取或初始化控件屬性
3、Page_Load
典型應用:
? 讀取或更新控件屬性
4、Controlevents
典型應用:
? 執行特定于應用程序的處理:
??????? 如果頁包含驗證程序控件,則在執行任何處理之前堅持頁和各個驗證控件的IsValid屬性;
??????? 處理特定事件,如Button的Click事件
5、Page_PreRender
典型應用:
? 對頁的內容進行最后更改
6、Page_Unload
典型應用:
? 執行最后的清理工作,可能包括:
??????? 關閉打開的文件和數據庫連接;
??????? 完成日志記錄或其它特定于請求的任務。
??這個事件里要注意:因為在卸載階段,頁及其控件已被呈現,因此無法對響應流做進一步更改。如果嘗試調用方法如Response.Write方法,則該頁會引發異常。
好了,最后來一個經典的代碼實例來回顧一下前面講的主要內容。Code is cheap。看代碼了:
Code
using?System;
using?System.Configuration;
using?System.Data;
using?System.Web;
using?System.Web.Security;
using?System.Web.UI;
using?System.Web.UI.HtmlControls;
using?System.Web.UI.WebControls;
using?System.Web.UI.WebControls.WebParts;
///?<summary>
///?新建一個aspx頁面,名稱Default.aspx
///?</summary>
public?partial?class?Default?:?System.Web.UI.Page
{
????protected?void?Page_PreInit(object?sender,?EventArgs?e)
????{
????????Response.Write("Page_PreInit<br/>");
????}
????protected?void?Page_Init(object?sender,?EventArgs?e)
????{
????????Response.Write("Page_Init<br/>");
????}
????protected?void?Page_InitComplete(object?sender,?EventArgs?e)
????{
????????Response.Write("Page_InitComplete<br/>");
????}
????protected?void?Page_PreLoad(object?sender,?EventArgs?e)
????{
????????Response.Write("Page_PreLoad<br/>");
????}
????protected?void?Page_Load(object?sender,?EventArgs?e)
????{
????????Response.Write("Page_Load<br/>");
????}
????protected?void?Page_LoadComplete(object?sender,?EventArgs?e)
????{
????????Response.Write("Page_LoadComplete<br/>");
????}
????protected?void?Page_PreRender(object?sender,?EventArgs?e)
????{
????????Response.Write("Page_PreRender<br/>");
????}
????protected?void?Page_SaveStateComplete(object?sender,?EventArgs?e)
????{
????????Response.Write("Page_SaveStateComplete<br/>");
????}
???
????///?<summary>
????///?因為在卸載階段,頁及其控件已被呈現,因此無法對響應流做進一步更改。如果嘗試調用方法如Response.Write方法,則該頁會引發異常。
????///?</summary>
????///?<param?name="sender"></param>
????///?<param?name="e"></param>
????protected?void?Page_Unload(object?sender,?EventArgs?e)
????{
????????int?i?=?0;
????????i++;//這行代碼是用來設置斷點的,為什么不用Response.Write??*****
????}
????protected?void?Button1_Click(object?sender,?EventArgs?e)
????{
????????Label1.Text?=?"ControlEvent";
????????Response.Write("Button事件觸發!<br/>");
????}
}
1?Page?Request??--頁面請求
2?Start??--開始
3?Page?Initialization?--頁初始化
4?Load??--加載
5?Validation?--驗證
6?Postback?event?handling?--回發事件處理
7?Rendering?--呈現
8?Unload??--卸載 一、生命周期階段列表
下面來看看每個階段對應的具體說明:
1、頁請求
頁請求發生在頁生命周期開始之前。用戶請求頁時,asp.net將確定是否需要分析和編譯頁,或者是否可以在不運行頁的情況下,發送緩存版本以進行響應。
2、開始
在開始階段,將設置頁屬性,如Request和Response。在此階段,頁還將確定請求是回發請求還是新請求,并設置ispostback屬性。此外,在開始階段期間,將設置頁的UICulture屬性。
3、頁初始化
該階段,可以使用頁中的控件,并將設置每個控件的UniqueID屬性。此外,任何主題都將應用于頁。如果當前請求是回發請求,則回發數據尚未加載,并且控件屬性值尚未還原為視圖狀態中的值。
4、加載
該階段,如果當前請求是回發請求,則將使用從視圖狀態和控件狀態恢復的信息加載控件屬性。
5、驗證
在驗證期間,將調用所有驗證控件的Validate方法,此方法將設置各個驗證程序控件和頁的IsValid屬性。
6、回發事件處理
如果請求是回發事件,則將調用所有事件處理程序。
7、呈現
在呈現期間,視圖狀態將被保存到頁,然后頁將調用每個控件,以將其呈現的輸出提供給頁的Response屬性的OutPutStream。
8、卸載
完全呈現頁將頁發送至客戶端并準備丟棄時,將調用卸載。此時,將卸載頁屬性如Request,Response等,并進行清理。
二、生命周期事件列表(常見)
1、Page_PreInit
典型應用:
? 使用IsPostBack屬性確定是否是第一次處理該頁;
? 創建或者重新創建動態控件;
? 動態設置母版頁;
? 動態設置Theme屬性;
? 讀取或者設置配置文件屬性值。
注意:如果請求是回發請求,則控件的值尚未從視圖狀態還原。如果在此階段設置控件屬性,則值可能會在下一階段被改寫。
2、Page_Init
典型應用:
? 讀取或初始化控件屬性
3、Page_Load
典型應用:
? 讀取或更新控件屬性
4、Controlevents
典型應用:
? 執行特定于應用程序的處理:
??????? 如果頁包含驗證程序控件,則在執行任何處理之前堅持頁和各個驗證控件的IsValid屬性;
??????? 處理特定事件,如Button的Click事件
5、Page_PreRender
典型應用:
? 對頁的內容進行最后更改
6、Page_Unload
典型應用:
? 執行最后的清理工作,可能包括:
??????? 關閉打開的文件和數據庫連接;
??????? 完成日志記錄或其它特定于請求的任務。
??這個事件里要注意:因為在卸載階段,頁及其控件已被呈現,因此無法對響應流做進一步更改。如果嘗試調用方法如Response.Write方法,則該頁會引發異常。
好了,最后來一個經典的代碼實例來回顧一下前面講的主要內容。Code is cheap。看代碼了:
Code
using?System;
using?System.Configuration;
using?System.Data;
using?System.Web;
using?System.Web.Security;
using?System.Web.UI;
using?System.Web.UI.HtmlControls;
using?System.Web.UI.WebControls;
using?System.Web.UI.WebControls.WebParts;
///?<summary>
///?新建一個aspx頁面,名稱Default.aspx
///?</summary>
public?partial?class?Default?:?System.Web.UI.Page
{
????protected?void?Page_PreInit(object?sender,?EventArgs?e)
????{
????????Response.Write("Page_PreInit<br/>");
????}
????protected?void?Page_Init(object?sender,?EventArgs?e)
????{
????????Response.Write("Page_Init<br/>");
????}
????protected?void?Page_InitComplete(object?sender,?EventArgs?e)
????{
????????Response.Write("Page_InitComplete<br/>");
????}
????protected?void?Page_PreLoad(object?sender,?EventArgs?e)
????{
????????Response.Write("Page_PreLoad<br/>");
????}
????protected?void?Page_Load(object?sender,?EventArgs?e)
????{
????????Response.Write("Page_Load<br/>");
????}
????protected?void?Page_LoadComplete(object?sender,?EventArgs?e)
????{
????????Response.Write("Page_LoadComplete<br/>");
????}
????protected?void?Page_PreRender(object?sender,?EventArgs?e)
????{
????????Response.Write("Page_PreRender<br/>");
????}
????protected?void?Page_SaveStateComplete(object?sender,?EventArgs?e)
????{
????????Response.Write("Page_SaveStateComplete<br/>");
????}
???
????///?<summary>
????///?因為在卸載階段,頁及其控件已被呈現,因此無法對響應流做進一步更改。如果嘗試調用方法如Response.Write方法,則該頁會引發異常。
????///?</summary>
????///?<param?name="sender"></param>
????///?<param?name="e"></param>
????protected?void?Page_Unload(object?sender,?EventArgs?e)
????{
????????int?i?=?0;
????????i++;//這行代碼是用來設置斷點的,為什么不用Response.Write??*****
????}
????protected?void?Button1_Click(object?sender,?EventArgs?e)
????{
????????Label1.Text?=?"ControlEvent";
????????Response.Write("Button事件觸發!<br/>");
????}
}
轉載于:https://www.cnblogs.com/jeffwongishandsome/archive/2009/03/29/1423970.html
總結
以上是生活随笔為你收集整理的asp.net常规页生命周期阶段列表和事件列表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从Gmail故障看SaaS的服务风险
- 下一篇: IRIS在win2003中安装 报 er