黑马程序员_ASP.NET的生命周期
来源:互联网 发布:保研路 知乎 编辑:程序博客网 时间:2024/05/21 22:39
用户的请求是通过触发HttpApplication的19个事件23个步骤进行处理的。如果是一般处理程序(.ashx),那么执行完管道中的事件后按照原路进行返回。如果是aspx页面那么就开始走页面的生命周期了。
页面生命周期的主要步骤如下:
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.页面渲染
页面生命周期结束后,形成了页面,继续执行管道之后的事件,执行完毕后按照原路返回到客户端。
- 黑马程序员_ASP.NET的生命周期
- 黑马程序员_ASP.NET初探
- 黑马程序员_Asp.net缓存学习总结
- 黑马程序员_asp.net mvc 路由
- 黑马程序员_Asp.Net防盗链
- 黑马程序员_学习笔记23_ASP.NET中aspx 和 aspx.cs之间的关系
- 黑马程序员_asp.net页面事件执行顺序
- 黑马程序员_学习日记20_ASP.Net初级
- 黑马程序员_学习日记21_ASP.Net中级
- 黑马程序员_Asp.Net给图片附加水印
- 黑马程序员_ASP.Net页面静态化技术
- 黑马程序员_学习笔记10_asp.net初探之一般处理文件模型
- 黑马程序员_学习日记11_asp.net初探之视图状态
- 黑马程序员_学习笔记13_asp.net之Session原理解析
- 黑马程序员_学习笔记14_asp.net之Cookie原理解析
- 黑马程序员_学习笔记15_asp.net之验证码实现原理初探
- 黑马程序员_学习日记26_ASP.NET使用验证控件
- 黑马程序员_学习日记27_ASP.NET使用Rich控件
- OJ笔记:复制数组
- 经典软件设计模型 - 事件驱动模型
- Agile1001公益课#1——敏捷和Scrum角色介绍
- Java中读取输入方式的性能比较
- Java静态成员初始化问题
- 黑马程序员_ASP.NET的生命周期
- Agile1001公开课 第三期【北京】敏捷需求捕获By用户故事
- 开发板挂载出现的问题
- Python-Project Euler 81
- 总结 - Agile1001公开课 第三期【北京】敏捷需求捕获By用户故事
- 多线程下在原理解剖
- jquery分页-标签的属性值和window域函数
- GIT 使用手记
- Paxos算法1-算法形成理论