|
Stage |
Page Event |
Overridable method |
|
Page initialization |
Init |
|
|
View state loading |
|
Load ViewState |
|
Postback data processing |
|
LoadPostData method in any control that implements the IPostBackDataHandler interface |
|
Page loading |
Load |
|
|
Postback change notification |
|
RaisePostDataChangedEvent method in any control that implements the IPostBackDataHandler interface |
|
Postback event handling |
Any postback event defined by controls |
RaisePostBackEvent method in any control that implements the IPostBackEventHandler interface |
|
Page pre-rendering phase |
PreRender |
|
|
View state saving |
|
SaveViewState |
|
Page rendering |
|
Render |
|
Page unloading |
Unload |
|
1.Page initialization
這一階段是以Init事件為特征,当Init事件发生时,所有的在aspx文件中静态宣告的控件都已经初始化,并且获得他们的默认值。但是在这一个阶段,还没有任何view state information 可用。
2.View state loading
a.什么是view state
view state是一种隐藏的input元件,我们可以在每一个aspx文件生成的网页中看到。它用于回送促发时,传递元件信息。而且每一个元件都可以指定是否传递资讯,可以通过enableviewstate=false建立。
B一旦viewstate得以重建,页面中的控件和上次呈现在浏览器中的状态是一样的。下一步的动作就包括update 他们的状态,以整合客户端的改变。
3 Postback data processing
这个过程改变controls 的状态,能够让他们准确反应客户端的<html>元素的变化。
比如说,在postback 阶段,服务器端的textbox 控件能够获得客户端的对应的<input>标签里的值,并且用这个值来刷新textbox的text属性。
在postback data processing stage 的最终,所有的控件都能够反映出在客户端所做的修改。这时,load 事件触发。
4 Page loading
但是假如说一个textbox控件的text在客户端被修改,这个控件触发了textchanged事件,如果控件的一个或者多个事件被修改,每一个控件都能够决定触发哪一个合适的事件。这些被改变了属性的控件执行IPostBackDataHandler interface,会在load 事件之后马上触发IPostBackDataHandler interface的loadpostdata方法。
Lifecycle的关键是在client端触发某个事件之后时执行server端的事件。
当用户点某个button时,page就会postback,posted的值(value)的集合(包含这个button的ID的值)就会start 整个operation。如果确知这个控件要执行IPostBackDataHandler interface ,那么page framework就是去call RaisePostBackEvent 的method。这个RaisePostBackEvent执行的内容取决于控件的类型。
在处理完postback 事件之后,整个页面就可以render(实施) 了。这个阶段是以PreRender事件为标志的。这是控件在view state save之前和output render之后作update的最好时机。
7. Page pre-rendering phase
8. 就是saveviewstate阶段。
这个阶段所有控件和页面本身flush它们的view state 的内容。最终的结果会用连续的,hash的,Base64 encoded的形式放在__VIEWSTATE的field中。(serialized, hashed, Base64 encoded)
9. Rendering 阶段
在这个阶段,,每个控件的能够通过overriding (越过)render 的method 个性化。这个方法抓取html writer object,为控件产生html文本。Page class 采用递归的方法为每一个控件执行render 方法,并且产生html的output并且cashes.
10,页面的lifecycle终结的最终信号是unload event.
这一事件发生在page object dismiss之前。这一事件释放所有的临界资源(包括files,graphics和数据库联接等等)
浙公网安备 33010602011771号