`
iamnk2008
  • 浏览: 32803 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
最近访客 更多访客>>
社区版块
存档分类
最新评论

服务器控件生命周期简介

    博客分类:
  • .Net
阅读更多

服务器控件的生命周期是创建服务器控件最重要的概念。作为开发人员,必须对服务器控件生命周期深刻理解。当然,这不是一朝一夕就可以做到的。对于学习控件开发技术的初学者,可以不必掌握得非常详细深入,只需对服务器控件的生命周期中的不同阶段有一个大致的了解即可。
  在掌握服务器控件生命周期的过程中,读者要特别注意有关服务器控件状态的相关内容。在重点了解生命周期各个阶段的同时,对服务器控件的状态变化要注意以下问题:控件的生命周期何时保存控件和恢复其状态;何时与页面及其他控件之间进行交互;何时执行重要的处理逻辑;在各个阶段,控件可使用哪些信息、保持哪些数据、控件呈现时处于哪种状态以及何时输出显示标记文本等。如下列举了服务器控件生命周期所要经历的11个阶段。

  (1)初始化-- --在此阶段中,主要完成两项工作:一、初始化在传入Web请求生命周期内所需的设置;二、跟踪视图状态。首先,页面框架通过默认方式引发Init事件,并调用OnInit()方法,控件开发人员可以重写该方法为控件提供初始化逻辑。此后,页面框架将调用TrackViewState方法来跟踪视图状态。需要注意的是:多数情况下,Control基类提供的TrackViewState方法实现已经足够了。只有在控件定义了复杂属性时,开发人员才可能需要重写TrackViewState方法。

  (2)加载视图状态----此阶段的主要任务是检查服务器控件是否存在以及是否需要将其状态恢复到它在处理之前的请求结束的状态。因此该过程发生在页面回传过程中,而不是初始化请求过程。在此阶段,页面框架将自动恢复ViewState字典。如果服务器控件不维持其状态,或者它有能力通过默认方式保存其所有状态而使用ViewState字典,那么开发人员则不必实现任何逻辑。针对那些无法在 ViewState字典中存储的数据类型或者需要自定义状态管理的情况,开发人员可以通过重写LoadViewState方法来自定义状态的恢复和管理。

  (3)处理回发数据----若要使控件能够检查客户端发回的窗体数据,那么必须实现System.Web.UI.IPostBackDataHandler接口的 LoadPostData()方法。因此只有处理回发数据的控件参与此阶段。

  (4)加载----至此阶段开始,控件树中的服务器控件已创建并初始化、状态已还原并且窗体控件反映了客户端的数据。此时,开发人员可以通过重写OnLoad()方法来实现每个请求共同的逻辑。

  (5)发送回发更改通知----在此阶段,服务器控件通过引发事件作为一种信号,表明由于回发而发生的控件状态变化(因此该阶段仅用于回发过程)。为了建立这种信号,开发人员必须再次使用System.Web.UI.IPostBackDataHandler接口,并实现另一方法- RaisePostBackChangedEvent()。其判断过程为:如果控件状态因回发而更改,则LoadPostData()返回true;否则返回false。页面框架跟踪所有返回true的控件并在这些控件上调用RaisePostDataChangedEvent()。

  (6)处理回发事件----该阶段处理引起回发的客户端事件。为了便于将客户端事件映射到服务器端事件上进行处理,开发人员在此阶段可以通过实现 System.Web.UI.IPostBackEventHandler接口的RaisePostBackEvent()方法来实现该逻辑。由此途径,服务器控件将成功捕获回发的客户端事件进行服务器端的相应处理。

  (7)预呈现----该阶段完成在生成控件之前所需要的任何工作。通常情况下是通过重写OnPreRender()方法完成该工作。需要注意的是:在该阶段,可以保存在预呈现阶段对控件状态所做的更改,而在呈现阶段进行的更改则会丢失。

  (8)保存状态----如果服务器控件不维持状态,或者它有能力通过默认方式保存其所有状态而使用ViewState字典,那么开发人员不必在该阶段实现任何逻辑。因为这个保存状态的过程是自动的。如果服务器控件需要自定义状态保存,或者控件无法在ViewState字典中存储特殊的数据类型,则需要通过重写SaveViewState()方法来实现状态保存。

  (9)呈现----表示向HTTP输出流中写入标记文本的过程。开发人员通过重写Render()方法使其在输出流上自定义标记文本。

  (10)处置----在此阶段中,通过重写Dispose ()方法完成释放对昂贵资源的引用,如数据库链接等。

  (11)卸载----完成的工作与"处置"阶段相同,但是,开发人员通常在Dispose()方法中执行清除,而不处理Unload事件。
分享到:
评论

相关推荐

    ASP.NET服务器控件的生命周期分析.docx

    ASP.NET服务器控件的生命周期分析.docx

    AspNet补充资料(web服务器控件事件页面应用程序生命周期)

    AspNet补充资料(web服务器控件事件页面应用程序生命周期)

    ASP.NET服务器控件的生命周期分析

    主要介绍了ASP.NET服务器控件的生命周期分析,较为详尽的讲述了asp.net服务器控件的运行原理与过程,有助于深入了解asp.net程序的运行原理,需要的朋友可以参考下

    【ASP.NET编程知识】ASP.NET服务器控件的生命周期分析.docx

    【ASP.NET编程知识】ASP.NET服务器控件的生命周期分析.docx

    ASP.NET的网页代码模型及生命周期

    第4章 ASP.NET的网页代码模型及生命周期 从本章开始,就进入了ASP.NET应用程序开发的世界。在了解了C#的结构,以及面向对象的概念后,就可以从面向对象的思想开发ASP.NET应用程序。在ASP.NET中,能够使用面向对象的...

    web服务器控件开发.ppt

    ASP.NET的HTTP请求处理方法 当客户端向web服务器请求一个*.aspx的页面文件时,同asp类似,这个http请求也会被inetinfo.exe进程截获(www服务),它判断文件后缀之后,把这个请求转交给ASPNET_ISAPI.DLL而ASPNET_...

    庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术

    1.6 控件生命周期 12 1.6.1 概述 12 1.6.2 用代码跟踪控件生命周期过程 14 1.7 本章总结 17 第2章 服务器控件开发中的调试技术 18 2.1 预置代码示例 18 2.2 调试页面服务端代码 19 2.3 服务器控件的调试 20 ...

    页面生命周期全解图

    当一个获取网页的请求(可能是通过用户提交完成的,也可能是通过超链接完成的)被发送到Web服务器后,这个页面就会接着运行从创建到处理完成的一系列事件。在我们试图建立Asp.net页面的时候,这个执行周期是不必去...

    庖丁解牛 纵向切入ASP.NET 3.5控件和组件开发 part1

    1.6.2 用代码跟踪控件生命周期过程 14 1.7 本章总结 17 第2章 服务器控件开发中的调试技术 18 2.1 预置代码示例 18 2.2 调试页面服务端代码 19 2.3 服务器控件的调试 20 2.3.1 运行模式下的调试方法 20 2.3.2...

    庖丁解牛 纵向切入ASP.NET 3.5控件和组件开发 part2

    1.6.2 用代码跟踪控件生命周期过程 14 1.7 本章总结 17 第2章 服务器控件开发中的调试技术 18 2.1 预置代码示例 18 2.2 调试页面服务端代码 19 2.3 服务器控件的调试 20 2.3.1 运行模式下的调试方法 20 2.3.2...

    庖丁解牛纵向切入ASP.NET 3.5控件和组件开发技术.pdf

    1.6.2 用代码跟踪控件生命周期过程14 1.7 本章总结17 第2章 服务器控件开发中的调试技术18 2.1 预置代码示例18 2.2 调试页面服务端代码19 2.3 服务器控件的调试20 2.3.1 运行模式下的调试方法20 2.3.2 设计...

    详解ASP.NET页面生命周期

    ASP.NET页面运行时候,页面将经历一个生命周期,在生命周期中将执行一系列的处理步骤。包括初始化、实例化控件、还原和维护状态、运行时间处理程序代码以及进行呈现。熟悉页面生命周期非常重要,这样我们才能在生命...

    ASP.NET Web页生命周期和执行的方法介绍

    以上所列的阶段中有些在页面级是不可见的,并且仅对服务器控件的编写者和要创建从 Page 导出的类的开发人员有意义。Init、Load、PreRender、Unload,再加上由嵌入式控件定义的所有回发事件,就构成了向外发送页面的...

    全网最全面的ASP.NET标准控件介绍及代码演示

    事件与生命周期1.2. 自动回发 IsPostBack属性2. 服务器控件2.1. HTML服务器控件2.2. WEB服务器控件3. 文本类型控件3.1. 标签 Label控件3.2. 文本框 TextBox控件4. 按钮类型控件4.1. 按钮 Button控件4.2. 图像按钮 ...

    asp.net教学讲义

    1.4.2 Web 窗体生命周期 16 1.4.3 Page事件 16 1.4.4 事件顺序 17 1.2.1.1 PageLoad事件 17 1.2.2 处理回送 18 1.2.2.1 回送使用示例 19 1.2.2.2 设置焦点 20 1.2.2.3 为Form设定默认按钮 21 1.2.3 ASP.NET应用程序...

    精通ASP.NET.4.0网络编程 part-2

    第1篇ASP.NET网络开发关键技术第1章ASP.NET网络开发基础(教学视频87分钟)1.1ASP.NET事件模型和页面生命周期1.1.1经典的Web事件处理方法1.1.2ASP.NET服务器控件事件模型1.1.3ASP.NET页面生命周期1.2母版页1.2.1母版页...

    精通ASP.NET.4.0网络编程 part-1

    第1篇ASP.NET网络开发关键技术第1章ASP.NET网络开发基础(教学视频87分钟)1.1ASP.NET事件模型和页面生命周期1.1.1经典的Web事件处理方法1.1.2ASP.NET服务器控件事件模型1.1.3ASP.NET页面生命周期1.2母版页1.2.1母版页...

    第8章 ASP编程 PPT

    8.1.3 ASP.NET 页面生命周期... 252 8.2 ASP的常用控件... 252 8.2.1 HTML 服务器控件概述... 253 8.2.2 ASP 的标准服务器控件概述... 254 8.3 ASP的常见内置对象... 257 8.3.1 Application对象... 258 8.3.2 ...

    COM与COM+从入门到精通(pdf版本,含源码)

    COM+组件的生命周期 ObjectControl接口 MTS活动 COM+中生成对象 安全引用 组件之间的参数传递 数据类型 使用分布式事务 分布式事务协调器(MSDTC) COM+事务的工作 事务与有状态对象 使用共享属性管理...

Global site tag (gtag.js) - Google Analytics