Asp.Net Server Control 的生命周期

Asp.Net 服务器控件的生命周期

实例化(Instantiate)

控件被页面或另一个控件通过调用它的构造器所实例化.

这个步骤之后所列出的阶段,仅当控件假如控件树中才会发生。

初始化(Initialize)

初始化在传入Web请求生命周期内所需的设置。在此阶段,控件树中的页面和全部控件通过默认方式来调用OnInit Method.

Writer Code时可以通过override OnInit Method ,为控件提供初始化逻辑。在其生命周期的这个时候,控件能够安全的访问置于Controls集合中的子控件,但是它不能访问控件层次中的父控件或其他层次更高的控件

开始跟踪视图状态(Begin Tracking View State)

这个极端发生在初始化阶段的末尾。

在此阶段页面自动调用trackViewState Method.

TrackViewState方法保证在此阶段之后,

使用ViewState字典属性而产生的变化保存在控件视图状态中。

在大多数情况下,Control基类提供的TrackViewState Method实现已经足够了,

只有在控件顶一复杂的属性时,才必须重载TrackViewState Method

加载(Load)

直到此阶段开始,控件树中的所有控件都已被初始化,并恢复到它们在先前周期最后的状态。OnLoad方法会执行所有请求共有的操作,如设置数据库查询。此时,树中的服务器控件已创建并初始化、状态已还原并且窗体控件反映了客户端的数据。如果需要实现仅在页面初始请求中执行的逻辑,那么实现该逻辑时,应该检查页面的IsPostBack属性

引发修改事件(仅用于回传过程,为可选项)(Raise Changed Events(postback only, optional))

只有在控件通过实现IPostBackDataHandler接口参与了回传数据处理时,这个阶段才发生在回传中。在此阶段中,控件通过引发事件(如TextBox的TextChanged事件)作为一种信号-----其状态由于回传而改变(引发更改事件以响应当前和以前回发之间的状态更改)。为了参与此阶段,控件必须实现IPostBackDataHandler接口的RaisePostDataChangedEvent方法。

引发回传事件(仅用于回传过程,为可选项)(Raise Postback Events(postback only, optional))

只有在控件通过实现IPostBackEventHandler接口参与了回传数据处理时,这个阶段才发生在回传中。在此阶段可以通过实现IPostBackEventHandler接口的RaisePostBackEvent方法来实现逻辑,以便把客户端事件映射到服务器端事件。

预生成(PreRender)

在此阶段中,应该通过重载OnPreRender方法,执行在生成控件之前所需要的任何工作。在生成输出之前执行任何更新,可以保存在预生成阶段对控件状态所做的更改,而在生成阶段所对应的更改则会丢失。

保存视图状态(Save View State)

如果控件不维持状态,或者它为保存其所有状态信息而使用ViewState字典,那么不必在此阶段期间实现任何附加逻辑。在此阶段期间,页面框架会自动保存ViewState字典。如果需要自定义状态管理,必须通过重载SaveViewState方法来实现自定义状态恢复,这种方法只被EnableViewState属性为true的控件所调用。在此阶段以后任何控件的改变都不会保存在控件的视图状态中。

生成(Render)

通过这种方法,控件在输出流上通过重载Control的Render方法或WebControl类的rendering方法中的一种,来写标记文本。

卸载(Unload)

在此阶段中,页面通过实现Page_Unload方法,来执行清除工作。作为控件开发者,应该重载Dispose方法来执行清除。

释放(Dispose)

在此阶段,应该重载Dispose方法来释放控件所占的全部资源。

先简单的说到这里吧,以后这个要作为一个专题来让大家一起热身的,(*^__^*) 嘻嘻!