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 ...
随机推荐
- 解决Django在mariadb创建的表插入中文乱码的问题
1.确保你的mariadb数据库的character_set_connection.character_set_database.character_set_server的编码均为utf8 Maria ...
- CentOS7配置redis主从复制
规划 ip port role 192.168.1.31 6379 master 192.168.1.32 6379 slave 192.168.1.33 6379 slave 0.关闭防火墙 sys ...
- CentOS按电源键关机
chkconfig --list查看没有acpid服务.安装之后解决yum install acpid -y 安装后需要重启,不然会提示:* Starting acpid ...acpid: can' ...
- 常用的smarty变量操作
php模板引擎smarty的变量操作符可用于操作变量,自定义函数和字符.语法中使用"|"应用变量操作符,多个参数用":"??指簟?/DIV> capita ...
- Ionic-wechat项目边开发边学(二):目录结构,header标签与路由
之前一直跟Linux驱动打交道,上层应用几乎为零,业余时间也不是很多,所以博客也不会写的非常详细,大家有问题尽管评论哦, 我有空会及时回复! 摘要 上一篇文章主要介绍了ionic的开发环境配置, 以及 ...
- 在浏览器中输入url地址 -> 显示主页的过程
-来自<图解HTTP> 最近在进行前端面试方面的一些准备,看了网上许多相关的文章,发现有一个问题始终绕不开: 在浏览器中输入URL到整个页面显示在用户面前时这个过程中到底发生了什么.仔细思 ...
- 从InitialContext获取数据源
概述 本文介绍如何从javax.naming.InitialContext中获取web容器配置的数据源. 在web开发中,常见的获取数据源的方式是把数据源定义为spring的bean,其他类通过spr ...
- Bzoj2818 Gcd(莫比乌斯反演)
题面 题意都在题目里面了 题解 你可以把题意看成这个东西 $$ \sum_{i=1}^n\sum_{j=1}^m\mathbf f(gcd(i,j)) $$ 其中$\mathbf f(n)$为$是否是 ...
- VB查询数据库之报表——机房收费系统总结(六)
我们要用一个软件做报表的模板.然后在VB里面添加部件.代码调用模板,详细步骤如下. 一.下载安装 首先做报表要下载安装Grid++Report 4.5 报表设计器 点击下载(内含破解补丁) 二.制作模 ...
- 安卓 内存 泄漏 工具 LeakCanary 使用
韩梦飞沙 yue31313 韩亚飞 han_meng_fei_sha 313134555@qq.com LeakCanary是Square开源了一个内存泄露自动探测神器 .这是项目的github仓库地 ...