asp.NET自定义服务器控件内部细节系列教程二

如大家要转载,请保留本人的版权:
/*
*Description:asp.NET自定义服务器控件内部细节系列教程
*Auther:崇崇-天真的好蓝
*MSN:chongchong2008@msn.com
*Dates:2007-05-20
*Copyright:ChongChong2008 YiChang HuBei China
*/
二 控件的生命周期
   控件的生命周期决定何时保存控件和恢复它的状态,何时与页面及其它控件之间进行交互,何时执行主要的处理逻辑,以及何时对输出流显示标记文本。

----------------------------------------
+ 实例化:构造器      
----------------------------------------
----------------------------------------
+ 初始化:OnInit方法和Init事件       
----------------------------------------
----------------------------------------
+ 开始跟踪视图状态:TraceViewState 方法     
----------------------------------------

 |只回传时发生
 -------------------------------------------------------
 ++ 开始跟踪视图状态:TraceViewState 方法     
 -------------------------------------------------------
 -------------------------------------------------------
 ++ 加载回传数据:IPostBackDataHandler.LoadPostdata 方法     
 -------------------------------------------------------

----------------------------------------
+ 加载:OnLoad方法和Load事件    
----------------------------------------

 |只回传时发生
 -------------------------------------------------------------------
 ++ 引发修改事件:IPostBackDataHandler.RaisePostDataChangedEvent方法     
 -------------------------------------------------------------------
 -------------------------------------------------------------------
 ++ 引发回传事件:IPostBackEventHandler.RaisePostBackEvent方法     
 -------------------------------------------------------------------

----------------------------------------
+ 预生成:OnPreRender方法和PreRender事件    
----------------------------------------
----------------------------------------
+ 保存视图状态:SaveViewState方法 
----------------------------------------
----------------------------------------
+ 生成:Render方法 
----------------------------------------
----------------------------------------
+ 卸载:OnUnload方法和Unload事件
----------------------------------------
----------------------------------------
+ 释放:Dispose方法
----------------------------------------

    初始化阶段的末尾,页面自动调用控件的TraceViewState方法,TraceViewState方法保证在此阶段之后,使用ViewState字典属性而产生的变化保存在控件图状态中。
    加载视图状态发生在回传时,而不是初始请求过程中,在此阶段中,控件必须把其状态恢复到它在处理先前的请求结束的情况,页面框架自动恢复ViewState字典。如果控件需要自定义状态管理,必须通过重载LoadViewState方法来实现自定义的状态恢复。
    加载回传数据和引发修改事件阶段,只在控件通过现实IPostBackDataHandler接口参与了回传数据处理时,这个阶段才发生在回传中。
    引发回传事件阶段只在控件通过现实IPostBackEventHandler接口参与了回传事件处理时,此阶段才发生在回传中。可以通过实现IPostBackEventHandler接口的RaisePostBackEvent方法来实现逻辑,以便把客户端事件映射到服务器端事件。
    预生成阶段,应该通过重载OnPreRender方法,执行在生成控件之前所需要的任何工作,如注册客户端脚本。
 实现自己的服务器事件和回传机制
    保存视图状态阶段,如果控件不维持状态或它为保存状态信息而使用ViewState字典,那么不必再此阶段实现任何逻辑,页面框架自动保存ViewState字典。如果控件需要自定义的状态管理,必须通过重载SaveVeiwState方法来实现自定义状态的恢复。在此阶段以后任何控件的改变都不会保存在控件视图状态中。
    生成阶段,控件在输出流上通过重载Control的Render方法或WebControl的Rendering方法中的一种,来书写标记文本。

posted @ 2007-09-06 18:48  玉米疯收  阅读(181)  评论(0编辑  收藏  举报