(1)請求頁面:頁請求發生在頁生命週期開始以前。html
(2)開始:在開始階段,將設置頁屬性,如Request和Response。在此階段,頁還將肯定請求是回發請求仍是新請求,並設置IsPostBack屬性。瀏覽器
(3)初始化頁面:頁面初始化期間,能夠使用頁中的控件,並將設置每一個控件的UniqueID屬性。若是當前請求是回發請求,則回發數據還沒有加載,而且控件屬性值還沒有還原爲視圖狀態中的值。服務器
(4)加載頁面:加載期間,若是當前請求是回發請求,則將使用從視圖狀態和控件狀態恢復的信息加載控件屬性。spa
(5)驗證:在驗證期間,將調用全部驗證程序控件的Validate方法,此方法將設置各個驗證程序控件和頁的IsValid屬性。code
(6)回發事件處理:若是請求是回發請求,則將調用全部事件處理程序。htm
(7)呈現頁面:在頁面呈現期間,視圖狀態將被保存到頁面,而後頁面將調用每一個控件,以將其呈現的輸出提供給頁的Response屬性的OutputStream。對象
(8)卸載頁面:徹底呈現頁、將頁發送至客戶端並準備丟棄時,將調用卸載。此時,將卸載頁屬性(如Response和Request)並執行清理。blog
與上面的生命週期相對應的Page類的生命週期事件如圖所示。生命週期
Page類生命週期中各個事件的說明如表所示。事件
Page類生命週期中各個事件的說明如表所示。
事 件 |
說 明 |
Init |
當服務器控件初始化時發生;初始化是控件生存期的第一步 |
InitComplete |
在頁初始化完成時發生 |
PreInit |
在頁初始化開始時發生 |
Load |
當服務器控件加載到Page對象中時發生 |
LoadComplete |
在頁生命週期的加載階段結束時發生 |
PreLoad |
在頁Load事件以前發生 |
PreRender |
在頁面加載控件對象以後、呈現以前發生 |
PreRenderComplete |
在呈現頁內容以前發生 |
UnLoad |
當服務器控件從內存中卸載時發生 |
Disposed |
當從內存釋放服務器控件時發生,這是服務器控件生存期的最後階段 |
using System; using System.Collections; 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; public partial class _Default : System.Web.UI.Page { protected int i = 1; protected void Page_PreInit(object sender, EventArgs e) { Response.Write(i + ".PreInit:當頁面初始化開始時發生"); i++; Response.Write("<br>"); } protected void Page_Init(object sender, EventArgs e) { Response.Write(i + ".Init:當服務器空間初始化時發生"); i++; Response.Write("<br>"); } protected void Page_InitComplete(object sender, EventArgs e) { Response.Write(i + ".InitComplete:當頁初始化完成時發生"); i++; Response.Write("<br>"); } protected void Page_PreLoad(object sender, EventArgs e) { Response.Write(i + ".PreLoad:當頁load事件前發生"); i++; Response.Write("<br>"); } protected void Page_Load(object sender, EventArgs e) { Response.Write(i + ".Load:當服務器控件加載到Page對象中時發生(加載頁面時)"); i++; Response.Write("<br>"); //在Load和LoadComplete之間會執行控件事件. //如 Button 控件的 Click 事件或 TextBox 控件的 TextChanged 事件。 } protected void Page_LoadComplete(object sender, EventArgs e) { Response.Write(i + ".LoadComplete:當頁面生命週期的加載階段結束時發生"); i++; Response.Write("<br>"); } protected void Page_PreRender(object sender, EventArgs e) { Response.Write(i + ".PreRender:當頁加載控件以後,呈現以前發生,使用該事件對頁或其控件的內容進行最後更改(預呈現)"); i++; Response.Write("<br>"); } protected void Page_PreRenderComplete(object sender, EventArgs e) { Response.Write(i + ".PreRenderComplete:呈現內容前發生.(預呈現完成)"); i++; Response.Write("<br>"); } protected void Page_SaveStateComplete(object sender, EventArgs e) { /*網頁上控件的狀態信息是在 PreRenderComplete 事件後保存的。 在SaveStateComplete事件以前用Trace查看頁時其實在該事件前還有 一個SaveState事件,只是這裏沒法演示. 注意:SaveStateComplete 事件在將頁和頁上控件的視圖狀態和控件狀態保存到持久性介質以後引起。 這是在頁被呈現到請求瀏覽器以前引起的最後一個事件。*/ Response.Write(i + ".SaveStateComplete:在頁已完成對頁和頁上控件的全部視圖狀態和控件狀態信息的保存後發生."); i++; Response.Write("<br>"); /*最後一部操做 呈現:Render: 它不是事件;在處理的這個階段,Page 對象會在每一個控件上調用此方法Render()。 全部 ASP.NET Web 服務器控件都有一個用於寫出發送給瀏覽器的控件標記的 Render 方法。*/ /*當你關閉頁面的時候就會引起UnLoad(當服務器控件從內存中卸載時發生) 和Disposed兩事件(當從內存釋放服務器控件時發生,這是服務器控件生存期的最後階段) 首先加載UnLoad事件:卸載頁面:徹底呈現頁、將頁發送至客戶端並準備丟棄時, 將調用卸載。此時,將卸載頁屬性(如Response和Request)並執行清理. 最後加載Disposed事件,釋放資源,生命週期結束.... */ } }
結果顯示:
參考: