刚开始研究.net,发现.net2.0中还是有不少bug,不知道3.5会怎样。
研究了一会,有点成果,记下一笔吧
asp.net运用的是基于事件的处理模式,page lifecycle就是指页面(page)和控件按一定的次序发生。
1、Detemine postback mode 根据在request里的viewstate对IsPostBack属性赋值
2、PreInit 在页面开始初始化时发生,可以动态设置master page 和theme
3、Initialize themes theme初始化
4、Apply master page 添加master page
先对于每一个控件 然后页面
5、Get Control Adapter 开发者可以用Control adapter 更改服务器控件,而这些Control Adapter都是在App_Browsers文件夹中定义
6、Apply skin 添加控件定一的皮肤
7、Init 控件生成,现在控件还不能被访问,ViewState中的信息还不能被访问
8 、Track View State 跟踪ViewState中的值
9、InitComplete 在页面(Page)初始化完成后触发,所有在页面定义的控件已被初始化,然而ViewState中的值还不能使用
if Ispostback
10、 Page state is loaded from presistence medium 读取ViewState并装载
11、load Control state 读取ControlState并装载
12、load View State (page then control) 读取并装载与page和control有关的ViewState
13、Process post data 装载post过来的数据
14、preLoad 发生在ViewState存储后Load事件发生前
15、Load(page,then controls) Load事件
if IsPostBack
16、Process Post Data 装载Post过来的数据,为了在Load事件中装载的控件
17、Control Change Events 所有的Control Change Event 触发 (TextChanged)
18、Control Postback Events 所有的Control Postback Event 触发(button click)
19、LoadComplete 所有的 Load事件发生后触发
20、Prepare Callback 如果有异步事件定义时触发
先页面 ,之后对与每个控件
21、Create Child Controls 控件创建子控件
if data binding
22、DataBinding 若控件有DataSourceID属性被设置是触发
23、Data Bind
24、DataBound
25、PreRender 准备Render
26、Execute asynchronous tasks 处理异步事件(PageAsyncTask)
27、Render Callback 翻译 client script callback
28、PreRenderComplete 所有控件和页面已经准备完成
先Page,然后对于每个控件
29、Save Control State
30、Save View State
31、Save Page State To Presistence Medium
32、SaveStateComplete
先页面,再对与每个控件
33、Render
先页面、在对于每个控件
34、UnLoad