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>标签里的值,并且用这个值来刷新textboxtext属性。

postback data processing stage 的最终,所有的控件都能够反映出在客户端所做的修改。这时,load 事件触发。


    4 Page loading

但是假如说一个textbox控件的text在客户端被修改,这个控件触发了textchanged事件,如果控件的一个或者多个事件被修改,每一个控件都能够决定触发哪一个合适的事件。这些被改变了属性的控件执行IPostBackDataHandler interface,会在load 事件之后马上触发IPostBackDataHandler interfaceloadpostdata方法。

 
    5-6. Postback change notification

Lifecycle的关键是在client端触发某个事件之后时执行server端的事件。

当用户点某个button时,page就会postbackposted的值(value)的集合(包含这个buttonID的值)就会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的形式放在__VIEWSTATEfield中。serialized, hashed, Base64 encoded


9.
Rendering 阶段

在这个阶段,,每个控件的能够通过overriding (越过)render method 个性化。这个方法抓取html writer object,为控件产生html文本。Page class 采用递归的方法为每一个控件执行render 方法,并且产生htmloutput并且cashes.

 

10,页面的lifecycle终结的最终信号是unload event.

这一事件发生在page object dismiss之前。这一事件释放所有的临界资源(包括files,graphics和数据库联接等等)

最后,浏览器(brower)接收到所有的http response packet ,显示整个页面。