从大的方面页面生命周期分为如下三个阶段:
一、初始化阶段:主要完成用客户端投递过来的数据更改页面控件的状态。具体又分如下各阶段:
1、Begin PreInit -> End PreInit 在这个阶段,IsCallback,IsCrossPagePostback,IsPostBack被设置。在这个阶段也可以对母版页或主题进行编程。Code:
protected void Page_PreInit(object sender, EventArgs e)
{
string s = Request.QueryString["theme"];
if (s == null)
{
return;
}
if (s.Equals("1"))
{
Page.Theme = "Theme-1";
}
else
{
Page.Theme = "Theme-2";
}
}
2、Begin Init -> End Init 此阶段首先处理子控件,然后是页面,此时ViewState尚未恢复。
3、Begin InitComplete -> End InitComplete 表明初始化子阶段结束,在此时启用ViewState的变更跟踪功能。
4、Begin LoadState -> End LoadState 在此时控件被恢复到上一次请求时的状态。
5、Begin ProcessPostData -> End ProcessPostData 此阶段,用客户端投递过来的数据更新控件的状态。
6、Begin PreLoad -> End PreLoad 此时,表明页面已完成系统的初始化。
二、准备阶段:
7、Begin Load -> End Load 此阶段,先由页面引发,再由子控件引发,此时控件反映了从客户端投递过来的数据。
8、Begin ProcessPostData Second Try -> End ProcessPostData Second Try
9、Begin Raise ChangedEvents -> End Raise ChangedEvents 此时控件状态已被更改。
10、Begin Raise PostBackEvent -> End Raise PostBackEvent 此时执行回发事件。
11、Begin LoadComplete -> End LoadComplete 此时表明页面准备阶段的结束。
三、终结阶段:
12、Begin PreRender -> End PreRender 此阶段,页面控件可以进行输出前的任何更改。
13、Begin PreRenderComplete -> End PreRenderComplete 预呈现阶段的结束
14、Begin SaveState -> End SaveState 此阶段保存ViewState(UI属性,如控件的内容),保存控件的状态(具有状态行为的属性)。
15、Begin SaveStateComplete -> End SaveStateComplete 此时,所有控件都已完全存储在持久性介质中。
16、Begin Render -> End Render 此阶段生成HTML标记。