atitit.提升开发效率---使用server控件生命周期 asp.net 11个阶段 java jsf 的6个阶段比較
atitit.提升开发效率---使用server控件生命周期 asp.net 11个阶段 java jsf 的6个阶段比較
例如以下列举了server控件生命周期所要经历的11个阶段。
(1)初始化-- --在此阶段中,主要完毕两项工作:一、初始化在传入Web请求生命周期内所需的设置;二、跟踪视图状态。首先。页面框架通过默认方式引发Init事件, 并调用OnInit()方法。控件开发者能够重写该方法为控件提供初始化逻辑。此后。页面框架将调用TrackViewState方法来跟踪视图状态。 须要注意的是:多数情况下,Control基类提供的TrackViewState方法实现已经足够了。仅仅有在控件定义了复杂属性时。开发者才可能须要 重写TrackViewState方法。
(2)载入视图状态----此阶段的主要任务是检查server控件是否存在以及是否须要将其状态恢复到它在处理之前的请求结束的状态。因此该过程发 生在页面回传过程中。而不是初始化请求过程。在此阶段,页面框架将自己主动恢复ViewState字典。假设server控件不维持其状态。或者它有能力通过默认方 式保存其全部状态而使用ViewState字典,那么开发者则不必实现不论什么逻辑。针对那些无法在 ViewState字典中存储的数据类型或者须要自己定义状态管理的情况,开发者能够通过重写LoadViewState方法来自己定义状态的恢复和管理。
作者:: 老哇的爪子 Attilax 艾龙。 EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
(3)处理回发数据----若要使控件可以检查client发回的窗口数据。那么必须实现System.Web.UI.IPostBackDataHandler接口的 LoadPostData()方法。
因此仅仅有处理回发数据的控件參与此阶段。
(4)载入----至此阶段開始,控件树中的server控件已创建并初始化、状态已还原而且窗口控件反映了client的数据。此时。开发者能够通过重写OnLoad()方法来实现每一个请求共同的逻辑。
(5)发送回发更改通知----在此阶段,server控件通过引发事件作为一种信号,表明因为回发而发生的控件状态变化(因此该阶段仅用于回发过 程)。
为了建立这样的信号,开发者必须再次使用System.Web.UI.IPostBackDataHandler接口。并实现还有一方法- RaisePostBackChangedEvent()。其推断过程为:假设控件状态因回发而更改。则LoadPostData()返回true;否则 返回false。
页面框架跟踪全部返回true的控件并在这些控件上调用RaisePostDataChangedEvent()。
(6)处理回发事件----该阶段处理引起回发的client事件。
为了便于将client事件映射到server端事件上进行处理。开发者在此阶段能够通过实 现 System.Web.UI.IPostBackEventHandler接口的RaisePostBackEvent()方法来实现该逻辑。
由此途径, server控件将成功捕获回发的client事件进行server端的对应处理。
(7)预呈现----该阶段完毕在生成控件之前所须要的不论什么工作。通常情况下是通过重写OnPreRender()方法完毕该工作。须要注意的是:在该阶段,能够保存在预呈现阶段对控件状态所做的更改,而在呈现阶段进行的更改则会丢失。
(8)保存状态----假设server控件不维持状态。或者它有能力通过默认方式保存其全部状态而使用ViewState字典。那么开发者不必在 该阶段实现不论什么逻辑。由于这个保存状态的过程是自己主动的。假设server控件须要自己定义状态保存,或者控件无法在ViewState字典中存储特殊的数据类型, 则须要通过重写SaveViewState()方法来实现状态保存。
(9)呈现----表示向HTTP输出流中写入标记文本的过程。开发者通过重写Render()方法使其在输出流上自己定义标记文本。
(10)处置----在此阶段中,通过重写Dispose ()方法完毕释放对昂贵资源的引用,如数据库链接等。
(11)卸载----完毕的工作与"处置"阶段同样,可是,开发者通常在Dispose()方法中运行清除,而不处理Unload事件。
ASP.NET 2.0server控件开发精要 - 徜徉在微软的陷阱 - 博客频道 - CSDN.NET.htm
atitit.提升开发效率---使用server控件生命周期 asp.net 11个阶段 java jsf 的6个阶段比較的更多相关文章
- atitit.提升开发效率---使用服务器控件生命周期 asp.net 11个阶段 java jsf 的6个阶段比较
atitit.提升开发效率---使用服务器控件生命周期 asp.net 11个阶段 java jsf 的6个阶段比较 如下列举了服务器控件生命周期所要经历的11个阶段. (1)初始化-- --在此 ...
- atitit.提升开发效率---MDA 软件开发方式的革命(3)----自己主动化建表
atitit.提升开发效率---MDA 软件开发方式的革命(3)----自己主动化建表 1. 建模在后自己主动建表 1 1. 传统上,须要首先建表,在业务编码.. 1 2. 模型驱动建表---很多其它 ...
- Atitit. 提升开发效率与质量DSL ( 3) ----实现DSL的方式总结
Atitit. 提升开发效率与质量DSL ( 3) ----实现DSL的方式总结 1. 管道抽象 1 2. 层次结构抽象(json,xml etc) 1 3. 异步抽象promise 1 4. Ide ...
- atitit.提升开发效率---MDA 软件开发方式的革命(3)----自动化建表
atitit.提升开发效率---MDA 软件开发方式的革命(3)----自动化建表 1. 建模在后自动建表 1 1. 传统上,需要首先建表,在业务编码.. 1 2. 模型驱动建表---更多简化法是在建 ...
- atitit.提升开发效率---mda 软件开发方式的革命--(2)
atitit.提升开发效率---mda 软件开发方式的革命--(2) 1. 一个完整的MDA规范包含: 1 2. 一个完整的MDA应用程序包含: 1 3. MDA能够带来的最大的三个好处是什么? 2 ...
- atitit.提升开发效率---mda 软件开发方式的革命
atitit.提升开发效率---mda 软件开发方式的革命 1. 软件开发方式的革命开发工具的抽象层次将再次提升 1 2. 应用框架和其实现相分离 2 3. 目前的问题模型和代码不同步 2 4. MD ...
- atitit.提升开发效率---动态语言总结
atitit.提升开发效率---动态语言总结 ruby,python 都不错,就是语法不好, 应用不广泛,文档,工具都非常少,不推荐... php狠不错,就是高级特性不行.. 看来子有.net/jav ...
- ASP.NET页面生命周期与控件生命周期
ASP.NET页面生命周期 (1)PreInit 预初始化(2)Init 初始化(3)InitComplete 初始化完成(4)PreLoad 预加载(5)Load 加载(6)LoadComplete ...
- .net 控件生命周期
这里列举出来了11个生命周期,一般的控件生命周期会经历这11个生命周期,但是有一些特别的控件比如页面控件System.Web.UI.Page等. 具体代码参考如下: /// <summary&g ...
随机推荐
- nginx反向代理二级页面
当公司只存在一个公网地址时候,需要影射多个域名,并且域名下面要配置二级目录的时候 可以参照如下配置 upstream h5_game { server 10.0.100.153:80; } serve ...
- Interllij IDEA 使用Git工具
1.git简介 git是目前流行的分布式版本管理系统.它拥有两套版本库,本地库和远程库,在不进行合并和删除之类的操作时这两套版本库互不影响.也因此其近乎所有的操作都是本地执行,所以在断网的情况下任然可 ...
- COCOS2D - JS 之JSON 解析
list 类型的json数据 var source = ["10004","1234","4","3","1 ...
- es2015(es6)学习总结
1.三种声明方式 var:它是variable的简写,可以理解成变量的意思. let:它在英文中是“让”的意思,也可以理解为一种声明的意思. const:它在英文中也是常量的意思,在ES6也是用来声明 ...
- [THINKPHP] 温故知新之getFieldBy
1.getFieldBy id name 1 Mike 需求1:想要获取Mike M('table')->getFieldById('1','name'); 需求2:想要获取id的值1 M('t ...
- sql 预编译 in
sql : "select * from json where id in (:paramName)"; 在使用Hibernate时,sql in的预编译语句为query.setP ...
- HDU 6107 Typesetting (倍增)
Typesetting Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total ...
- Linux命令之head
head [选项] [文件] head命令输出文件开头部分,默认情况下显示文件的头10行.如果指定多个文件,每个文件前都有一个标题,给出文件名.如果没有指定文件,或当文件为-时,读取标准输入. (1) ...
- BZOJ 4939 [Ynoi2016]掉进兔子洞(莫队+bitset)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4939 [题目大意] 给出一个数列,每个询问给出三个区间,问除去三个区间共有的数字外, ...
- HDU 2255 奔小康赚大钱(KM算法)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=2255 [题目大意] 求最大匹配 [题解] KM模板 [代码] #include <cstdi ...