页面生命周期_第1张图片

 

页面生命周期的主要步骤如下:

 

1.创建页面控制树,那么如何创建页面树的结构呢?把它封装成了一个方法,这个方法的名字就叫做FrameworkInitliaze() 在方法内部给aspx上所有的控件都New一个实例,然后构造一个树的结构即是有一个树的结构。只有执行创建页面之后,页面上才会有控件。

2.判断IspostBack,确定是否回发。

3.初始化

初始化包括三个阶段:

1)PreInint()预初始化

A.调用OnPreinit方法引发PreInit事件

B.利用App_Themes目录中的内容进行初始化主题。以动态实现一个PageThem  

属性值,并创建一个编译类的实例。

C.应用模板页

2)开始初始化,将所创建的控件树上的控件都new一个实例并赋默认值。

A.递归初始化Controls集合中的控件,初始化包括设置这些控件的属性。

B.递归应用控件皮肤。

C.调用OnInit方法以引发自身的Init事件,接着递归调用子控件的OnInit方法来    

引发他们的Init事件。

D.调用自身的TrackViewState方法重启自身的视图状态跟踪,接着递归调用子控                 

件的TrackViewState方法重启自身的视图状态跟踪。

3)InitComplete()初始化完成

4.加载ViewState处理回发数据:

加载页面状态,解析隐藏域中的ViewState,ViewState保持的值赋值到对应 

控件中。把需要触发事件的控件放到一个集合当中去。 

5.预加载(PreLoad)

页面调用OnPreLoad方法以引发PreLoad事件,该事件表示页面生命周期进 

入加载阶段。对应sapx.cs中的Page_Load事件。

6.加载(Load)

页面首先调用自身的OnLoad方法以引发自身的Load事件,接着递归调用 

Contorls集合中控件的OnLoad方法以引发它们的Load事件。

7.ProcessPostData第二次处理回发数据

8.触发改变的事件和点击事件。

9.页面加载完成

10.预渲染,对空间树进行最后一次处理

11.保存当前页面的状态。

12.页面渲染

       页面生命周期结束后,形成了页面,继续执行管道之后的事件,执行完毕后按照原路返回到客户端。

       文中有直接抄来的部分,其实写这个只是为了让自己再理解一遍,图是自己划的,虽然简单但是可以让自己加深理解,没事自己画画还是有好处的。