让阳光指引生命的每一刻,乘着风,跟随我融化空气

美丽的地球,有美丽的cnblog [hjp3]hjptype=song&player=1&son=http://www.taihugolf.com.cn/villa/sound_00ok01.mp3&autoplay=yes&autoreplay=1&bgcolor=FFFFFF&width=200&height=20[/hjp3]

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 on 2007-05-21 09:21 天真的好蓝啊 阅读(377) 评论(2)  编辑 收藏 所属分类: C#.NET

Feedback

#1楼  2007-05-23 10:49 chen [未注册用户]

有没有很简单的Demo我正在学习这个   回复  引用    

#2楼  2007-05-23 20:13 王琳 [未注册用户]

我也需要,前一阶段试验http://www.cnblogs.com/Clingingboy/category/68883.html
没有试出来
我的msn是orichisonic@hotmail.com
也是搞net c#方面的开发的   回复  引用    



标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-05-23 15:01 编辑过
 
 


My Links

Blog Stats

News

与我联系

搜索

 

常用链接

留言簿(1)

我管理的小组

我参加的小组

我的标签

随笔分类

随笔档案

相册

最新评论

阅读排行榜

评论排行榜

集从人之所长,创造博客社区神话,实现梦想!