asp.net web page深入探讨二--

asp.net web page深入探讨二--

ID:9495003

大小:68.50 KB

页数:11页

时间:2018-05-01

asp.net web page深入探讨二--_第1页
asp.net web page深入探讨二--_第2页
asp.net web page深入探讨二--_第3页
asp.net web page深入探讨二--_第4页
asp.net web page深入探讨二--_第5页
资源描述:

《asp.net web page深入探讨二--》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、ASP.NetWebPage深入探讨二>>五、页面生存周期现在回到第三个标题中讲到的内容,我们讲到了HttpApplication的实例接收请求,并创建页面类的实例,实际上这个实例也就是动态编译的ASPX的类的一个实例,上一个标题中我们了解到ASPX实际上是代码绑定中类的子类,所以它继承了所有的protected方法。现在我们来看看VS.Net自动生成的CodeBehind类的代码,以此来开始我们对页面生命周期的探讨:#regionSDN中摘录的一段描述和一个页面生命周期方法和事件触发的顺序表:“每次请求ASP.页时,服务器就会加载一个ASP.页,并在请求完成时卸载该页。

2、页及其包含的服务器控件负责执行请求并将HTML呈现给客户端。虽然客户端和服务器之间的通讯是无状态的和断续的,但是必须使客户感觉到这是一个连续执行的过程。”“这种连续性假象是由ASP.页框架、页及其控件实现的。回发后,控件的行为必须看起来是从上次Web请求结束的地方开始的。虽然ASP.页框架可使执行状态管理相对容易一些,但是为了获得连续性效果,控件开发人员必须知道控件的执行顺序。控件开发人员需要了解:在控件生命周期的各个阶段,控件可使用哪些信息、保持哪些数据、控件呈现时处于哪种状态。例如,在填充页上的控件树之前控件不能调用其父级。”“下表提供了控件生命周期中各阶段的高级概述

3、。有关详细信息,请点击表中的链接。”阶段控件需要执行的操作要重写的方法或事件初始化初始化在传入Web请求生命周期内所需的设置。请参阅处理继承的事件。Init事件(OnInit方法)加载视图状态在此阶段结束时,就会自动填充控件的ViewState属性,详见维护控件中的状态中的介绍。控件可以重写LoadViewState方法的默认实现,以自定义状态还原。LoadViewState方法处理回发数据处理传入窗体数据,并相应地更新属性。请参阅处理回发数据。注意只有处理回发数据的控件参与此阶段。LoadPostData方法(如果已实现IPostBackDataHandler)加载执行

4、所有请求共有的操作,如设置数据库查询。此时,树中的服务器控件已创建并初始化、状态已还原并且窗体控件反映了客户端的数据。请参阅处理继承的事件。Load事件(OnLoad方法)发送回发更改通知引发更改事件以响应当前和以前回发之间的状态更改。请参阅处理回发数据。注意只有引发回发更改事件的控件参与此阶段。RaisePostDataChangedEvent方法(如果已实现IPostBackDataHandler)处理回发事件处理引起回发的客户端事件,并在服务器上引发相应的事件。请参阅捕获回发事件。注意只有处理回发事件的控件参与此阶段。RaisePostBackEvent方法(如果已

5、实现IPostBackEventHandler)预呈现在呈现输出之前执行任何更新。可以保存在预呈现阶段对控件状态所做的更改,而在呈现阶段所对的更改则会丢失。请参阅处理继承的事件。PreRender事件(OnPreRender方法)保存状态在此阶段后,自动将控件的ViewState属性保持到字符串对象中。此字符串对象被发送到客户端并作为隐藏变量发送回来。为了提高效率,控件可以重写SaveViewState方法以修改ViewState属性。请参阅维护控件中的状态。SaveViewState方法呈现生成呈现给客户端的输出。请参阅呈现ASP.服务器控件。Render方法处置执行销

6、毁控件前的所有最终清理操作。在此阶段必须释放对昂贵资源的引用,如数据库链接。请参阅ASP.服务器控件中的方法。Dispose方法卸载执行销毁控件前的所有最终清理操作。控件通常在Dispose中执行清除,而不处理此事件。UnLoad事件(OnUnLoad方法)从这个表里面我们可以清楚的看到一个Page从装载到卸载之间调用的方法和触发的时间,接下来我们就深入的对其进行一些分析。看了上面的表,细心的朋友可能要问了,既然OnInit是页面生命周期的开始,而我们在上一讲中谈到控件在子类中被创建,那么在这里实际上在Initializeponent方法中我们已经可以使用父类中声名的字段

7、了,那么就意味着子类的初始化更在这之前?在第三个标题中我们讲到了页面类的ProcessRequest才是真正意义上的页面声明周期的开始,这个方法是由HttpApplication调用的(其中调用的方式123下一页>>>>这篇文章来自..,。比较复杂,有机会单独撰文来讲解),一个Page对请求的处理就是从这个方法开始,通过反编译.Net类库来查看源代码,我们发现在System.SDN)这个方法是System..Web.WebControl.Control类中定义的(这个类是Page和所有服务器控件的祖宗),并且在OnLoad方法

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。