页面生命周期包括几个阶段:
Page Request阶段:确定是否需要执行页面,也许可以直接从缓存拿页面代码
Start阶段,页面的Request和Response已经可以访问,还确定了是否是IsPostback,并且UICulture已经被设置
Page Initialization阶段,页面上的控件已经可以访问,UniqueID已经确定。Theme和MasterPage也已经确定。但是控件属性还未从ViewState恢复,并且PostData还未被装载。
Load阶段
Validation阶段
控件事件阶段
Rendering阶段
Unload阶段
数据绑定控件的事件:
DataBinding
RowCreated/ItemCreated
RowDataBound/ItemDataBound
DataBound
页面事件顺序:
PreInit --> Init --> InitComplete --> PreLoad --> Load --> Control events --> LoadComplete --> PreRender --> SaveStateComplete --> Render --> Unload
Init是控件先,再是页面
PreLoad之后就LoadViewState 并处理了Postback Data了
Load是页面先,其次是控件
PreRender之前EnsureChildControls已经调用,数据绑定方法已经调用,控件的PreRender事件也已经被调用
Unload也是控件先,然后才是页面
http://john-sheehan.com/blog/wp-content/uploads/aspnet-life-cycles-events.pdf
http://blog.krisvandermast.com/content/binary/ASP.NET-2.0-life-cycle.png
http://aspnetresources.com/downloads/MS%20Ajax%20Client%20Life-Cycle%20Events.pdf
Page Request阶段:确定是否需要执行页面,也许可以直接从缓存拿页面代码
Start阶段,页面的Request和Response已经可以访问,还确定了是否是IsPostback,并且UICulture已经被设置
Page Initialization阶段,页面上的控件已经可以访问,UniqueID已经确定。Theme和MasterPage也已经确定。但是控件属性还未从ViewState恢复,并且PostData还未被装载。
Load阶段
Validation阶段
控件事件阶段
Rendering阶段
Unload阶段
数据绑定控件的事件:
DataBinding
RowCreated/ItemCreated
RowDataBound/ItemDataBound
DataBound
页面事件顺序:
PreInit --> Init --> InitComplete --> PreLoad --> Load --> Control events --> LoadComplete --> PreRender --> SaveStateComplete --> Render --> Unload
Init是控件先,再是页面
PreLoad之后就LoadViewState 并处理了Postback Data了
Load是页面先,其次是控件
PreRender之前EnsureChildControls已经调用,数据绑定方法已经调用,控件的PreRender事件也已经被调用
Unload也是控件先,然后才是页面
http://john-sheehan.com/blog/wp-content/uploads/aspnet-life-cycles-events.pdf
http://blog.krisvandermast.com/content/binary/ASP.NET-2.0-life-cycle.png
http://aspnetresources.com/downloads/MS%20Ajax%20Client%20Life-Cycle%20Events.pdf