`
北极的。鱼
  • 浏览: 159144 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

【转】AspNet2.0页面生命周期

 
阅读更多

转自:http://blog.csdn.net/SysBug/article/details/1638013

 

页面框架通过如下过程处理aspx文件请求:
    1:解析aspx文件,并创建一个控件树;
    2:使用控件树动态实现一个继承自Page类的类或者控件 ;
    3:动态编译类;
    4:缓存编译类,以备后用;
    5:动态创建一个编译类的实例。页面开始启动生命期,在这个过程中,页面将通过生命周期的不同阶段;=========================================================
页面经历了如下阶段【其中一些阶段标记为仅仅回传,是说只有在被回传到服务器时,页面才经历这些阶段】:

 


01:页面首先从QueryString或者Request对象的Form集合中获得回传数据。

02:页面检测回传数据集合(NameValueCollection,Form或者QueryString)是否包含一个键为_CallBackId的项。如  果存在,那么设置其Boolean属性IsCallBack为True,以便通过AspNet客户端回调机制,标明页面已经回传到服务器。

03:预初始化(PreInit):
  在页面生命周期的预初始化阶段执行如下操作:
   a:调用OnPreInit方法引发PreInit事件。
   b:利用App_Themes目录中的内容初始化主题,以动态实现一个PageTheme类型的类,
    编译该类,并创建一个编译类的实例,接着将实例赋值给它的PageTheme属性值
   c:应用母版页

04:初始化(Init):
  在页面生命周期的初始化阶段执行以下操作
   a:递归初始化Controls集合中的控件。初始化包括设置这些控件的属性,
    例如:Page,Id和NameContainer等
   b:递归应用控件皮肤
   c:调用OnInit方法以引发自身的Init事件,接着递归调用子控件的OnInit方法来引发它们的Init事件
   d:调用自身的TrackViewState方法来启动自身的视图状态跟踪,接着递归调用子控件
    的TrackViewState方法来启动它们的视图状态跟踪。

05:完成初始化(InitComplete):
  页面调用OnInitComplete方法来引发InitComplete事件。该事件标明了初始化阶段的结束。
此时,页面Controls集合的所有控件都被初始化了。


06:加载控件状态(Load Control State)[PostBack Only]:
  页面递归调用Control集合中控件的LoadControlState方法,这些控件已经调用了Page类
的RegisterRequiresControlState方法,以使用它们的控件状态。

07:加载视图状态(Load View State)[PostBack Only]:
  页面首先调用自身的LoadViewState方法,接着递归调用Controls集合控件的LoadViewState方法,以允许它们加载它们的已经保存的视图状态。

08:加载回传数据(Load Post Data)[PostBack Only]:
  页面调用实现IPostBackDataHandler接口的控件的LoadPostData方法,并将回传数据传递给该方法。每个控件的LoadPostDate方法都必须访问回传数据,并据此更新相应的控件属性。
例如:TextBox控件的LoadPostData方法将文本框的新值设置为TextBox控件的Text属性值。

09:预加载(PreLoad):
  页面调用OnPreLoad方法以引发PreLoad事件。该事件表示页面生命周期将进入加载阶段。

10:加载(Load):
  页面首先调用自身的OnLoad方法以引发自身的Load事件,接着递归调用Controls集合中控件的OnLoad方法以引发它们的Load事件。页面开发人员可以为Load事件注册回调,那么就可以通过编程将子控件添加到页面的Controls集合中。

11:加载回传数据(Load Post Data)[PostBack Only Second Try]:
  页面调用控件的LoadPostBack方法。这些控件如果实现了IPostBackDataHandler接口,那么在加载阶段,它们已通过编程添加到Controls集合中。

12:引发回传数据修改事件(Raise Post Data Changed Event)[PostBack Only]:
  页面调用控件的RaisePostDataChangeEvent方法,这些控件的LoadPostData方法返回true。
RaisePostDataChangeEvent方法引发了回传数据修改事件。例如:当文本框的新值与旧值
不同时,那么TextBox控件将引发该事件。

13:引发回传事件(Raise PostBack Event)[PostBack Only]:
  页面调用控件的RaisePostEvent方法,这些控件相关的Html元素用于提交表单。例如,Button控件的相关Html元素将页面回传到服务器。控件的RaisePostBackEvent方法必须将回传事件映射到一个或多个服务器事件。例如,Button控件的RaisePostBackEvent方法将事件映射到了服务器端事件Command和Click上。

14:完成加载(Load Complete):
  页面调用OnLoadComplete方法来引发LoadComplete事件,这表示所有加载活动,包括加载回传数据,以及引发回传数据修改事件,并以更新控件自身的活动都完成了。

15:引发回调事件(Raise CallBack Event)(PostBack And CallBack Only):
  页面调用控件的RaiseCallBackEvent方法。该控件可使用AspNet客户端回调机制来允许客户端方法(例如JavaScript函数)调用服务器端方法,而无需将整个页面回传给服务器。
RaiseCallBackEvent方法必须调用服务器端方法。如果页面的回传使用了客户端回调机制,那么页面将不会执行剩余的页面生命周期阶段。

16:预呈现(PreRender):
  在页面生命周期这个阶段执行一下操作。
   a:调用EnsureChildControls方法来确保在页面进入呈现阶段之前,创建其子控件。
   b:调用自身的OnPreRender方法来引发PreRender事件。
   c:递归调用Controls集合中控件的OnPreRender方法,以引发它们的PreRender事件。

17:预呈现完成(PreRender Complete):
  页面调用OnPrerenderComplete方法来引发PreRenderComplete事件,这表示所有预呈现活动完成了。

18:保存控件状态(Save Control State):
  页面递归调用Controls集合中控件的SaveControlState方法。这些控件已经调用了Page类的RegisterRequiresControlState方法来保存它们的控件状态。

19:保存视图状态(Save View State):
  页面首先调用自身的SaveViewState方法,然后调用Controls集合中的SaveViewState方法,以允许它们来保存其视图状态。

20:保存状态完成(Save View Complete):
  页面调用OnSaveStateComplete方法以引发SaveStateComplete事件,这表示所有状态保存活动都完成了。

21:呈现:
  在页面生命周期的这个阶段执行一下操作。
   a:创建一个HtmlTextWriter类实例,该实例封装了输出响应流
   b:调用RenderCOntrol方法,并将HtmlTextWriter实例传递给该方法。
  RenderControl方法递归调用子控件的RenderControl方法,以便允许每个控件能够呈现其
Html标记文本。子控件的Html标记文本组成了最终发送给客户端浏览器的Html标记文本。

  • 大小: 176.8 KB
分享到:
评论
2 楼 北极的。鱼 2011-08-25  
ASP.NET 应用程序生命周期概述:

http://msdn.microsoft.com/zh-cn/library/ms178473(VS.80).aspx


ASP.NET 页生命周期概述:

http://msdn.microsoft.com/zh-cn/library/ms178472(v=VS.80).aspx
1 楼 北极的。鱼 2011-08-25  
※客户端向服务端请求一个新的aspx页面:
        1、 服务器端会创建一个控件树,再创建页面上的所有控件,把控件加到控件树中。
        2、 TrackViewState状态跟踪,检查控件的EnableViewState属性,对EnableViewState=ture的控件进行跟踪。
        3、 触发页面OnLoad。
        4、 预生成OnPreRender。
        5、 检查控件的EnableViewState属性,对需要保存状态的调用SaveViewState[状态1]。
        6、 Render生成。
        7、 … …

※从客户端回传一个aspx页面,页面被Post回服务端后。
        A、 和上述1一样。
        B、 和上述2一样。
        C、 LoadViewState,加载控件提交前的状态[就是加载状态1]。
        D、 LoadPostdata,从Post回来的表单中取出相应的数据,并把这些数据更新控件的状态[状态2]。
        E、 和上述3一样。
        F、 触发修改事件和回传事件。
        G、 和上述4一样。
        H、 保存状态SaveViewState[状态2]。
        I、 Render。
        J、 … …

相关推荐

    ASPNet2.0 程序样例

    9. **页面生命周期(Page Lifecycle)**:理解页面生命周期对于优化ASP.NET 2.0代码至关重要,它包括初始化、加载、验证、呈现和卸载等阶段。 10. **缓存(Caching)**:ASP.NET 2.0提供了强大的缓存机制,包括页面...

    ASPNET2.0版生产制程系统

    首先,ASP.NET 2.0是微软推出的一种强大的Web应用程序开发框架,它在ASP.NET 1.x的基础上进行了大量改进,引入了如控件生命周期管理、母版页(Master Pages)、主题(Themes)、皮肤(Skins)、自定义控件等新特性,使得...

    精通ASPNET2.0与SQLServer2005

    1. **页面生命周期**:ASP.NET 2.0页面从加载到响应用户请求经历多个阶段,如初始化、加载、验证、呈现和卸载。理解这一生命周期对于编写高效代码至关重要。 2. **控件模型**:ASP.NET 2.0引入了丰富的服务器控件,...

    aspnet2.0网上商店源码

    核心特性包括:页面生命周期管理、母版页(Master Pages)用于统一网站布局、主题(Themes)和皮肤(Skins)支持自定义样式、以及 Membership 和 Role Manager 提供的身份验证和授权服务。这些特性使得开发者能够更...

    ASP.NET2.0静态页面生成技术

    **输出缓存** 是另一种常用的优化策略,它将用户请求的页面内容保存在服务器内存中,当后续相同请求到来时,直接从缓存中返回,而不是重新执行页面的生命周期。输出缓存可以设置为整个页面、页面的部分区域或者根据...

    asp.net2.0教程

    4. 页面生命周期:ASP.NET 2.0的页面生命周期包括初始化、加载、验证、呈现和卸载阶段,方便开发者控制每个阶段的行为。 5. 状态管理:除了视图状态,还引入了控制状态(Control State)和临时数据(TempData)等,...

    ASP.NET 2.0动态网站设计教程

    1. **ASP.NET 2.0核心概念**:ASP.NET 2.0引入了诸如页面生命周期、控件事件模型、视图状态、缓存管理等关键概念。页面生命周期包括初始化、加载、验证、呈现和卸载阶段,理解这些阶段对于优化性能至关重要。控件...

    ASP.NET2.0实现无刷新客户端回调的Callback机制

    1. 页面生命周期:在无刷新更新中,只有UpdatePanel内控件的生命周期会被执行,包括初始化、加载、验证、保存状态和渲染等步骤。 2. 性能考虑:虽然无刷新更新提高了用户体验,但过多的UpdatePanel可能导致页面加载...

    Asp.Net2.0案例学习

    首先,Asp.Net 2.0的核心特性包括页面生命周期管理、视图状态、缓存机制和控件模型等。页面生命周期管理使开发者能够精确控制页面从初始化到卸载的各个阶段,如Page_Load、PreRender等事件,便于处理动态数据和用户...

    ASP.NET2.0(C#)基础教程part2

    ASP.NET 2.0 是微软推出的用于构建动态网站和web应用程序的框架,它...通过C#语言,开发者可以编写出高效、结构清晰的代码,并利用ASP.NET的特性如代码分离、页面生命周期管理和数据绑定,来构建功能丰富的Web应用。

    WIN2003 IIS 支持 ASP.NET插件 .net framework 2.0

    - 控制器生命周期管理:ASP.NET 2.0引入了ViewState,用于在页面间保持状态,以及ControlState,用于保留控件的必要状态。 - 数据源控件:简化了数据绑定和操作,如SqlDataSource、AccessDataSource等。 - 网页表单...

    专题资料(2021-2022年)ASPNET页面事件执行过程.doc

    ASP.NET 页面事件执行过程是构建动态网页的关键环节,它决定了页面生命周期中各个阶段的执行顺序。在ASP.NET框架中,事件处理模型允许开发者对页面及其控件的行为进行精确控制。以下是对ASP.NET页面事件执行过程的...

    Asp.Net2.0网站开发实战.iso

    通过《Asp.Net2.0网站开发实战》这个教程,学习者可以系统地掌握Asp.Net 2.0的开发技巧,包括页面生命周期、控件编程、数据库操作、安全性实践等多个方面。同时,配合压缩包中的文件"aspxon.com_AspNet20WzKfSzIsO"...

    asp.net2.0课程设计案例精编源代码

    ASP.NET 2.0引入了ViewState机制,用于在页面生命周期中维护状态,但同时也带来了性能上的影响。开发者可以通过智能地管理ViewState,或者在不需要时关闭,来优化应用性能。另外,PostBack机制使得服务器端控件能够...

    Asp.Net2.0网站开发实战

    其次,Asp.Net2.0的页面生命周期(Page Life Cycle)是开发过程中必须掌握的。了解页面从请求到响应的各个阶段,能帮助我们更好地管理控件的状态,处理用户输入,以及进行数据持久化。在这个过程中,事件模型(Event...

    aspnet经典实例

    1. **页面生命周期**:理解ASP.NET页面的生命周期,包括初始化、加载、验证、呈现和卸载等阶段,对于编写高效代码至关重要。 2. **服务器控件**:如Label、Button、TextBox等,这些控件提供了丰富的事件和属性,方便...

    asp.net2.0的一般处理程序的使用说明

    实现这个接口的类可以控制HTTP请求的生命周期,特别是`ProcessRequest`方法: ```aspnet public void ProcessRequest(HttpContext context) ``` `ProcessRequest`方法接收一个`HttpContext`对象,该对象提供了对...

    ASP.NET2.0实验指导书

    实验三涉及面向对象编程,包括类、对象、继承、封装和多态,这些是理解ASP.NET中控件和页面生命周期的关键。 实验四介绍了ASP.NET服务器控件,如Label、TextBox、Button等,这些控件提供了丰富的功能,简化了网页...

Global site tag (gtag.js) - Google Analytics