ASP.NET 的页面处理生命周期

本文详细介绍了ASP.NET页面从建立到结束的整个生命周期过程,包括页面建立阶段、处理回发阶段及页面结束阶段的关键步骤。重点阐述了各阶段发生的事件及其处理流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

asp.net的页面生命周期

一、页面建立阶段
1*页面的PreInit事件发生,在这时实例化控件,建立控件树,只有页面有这个事件。
2*每个控件的Init事件发生,分配iD,启用每个控件视图状态标志(或打开或关闭)。页面的Init事件随后发生,关联母板和主题,启用页面视图状态标志(或打开或关闭)。
3*InitComplete--页面独有
4*(根据PreInit事件阶段产生的IsPostBack)恢复视图状态,每个控件都有机会恢复视图,没有与这个阶段明确的事件关联。
   可以重写LoadViewState进行定制。
5*处理投递值。投递值被封装在内部系统所使用的数据字典中,扫描控件把投递ID与控件ID进行匹配,若匹配且
  控件实现了IPostBackDataHandler接口,则页处理程序将调用控件的接口方法LoadPostData(),若返回True,则状态已经被更新,
  则该控件将被添加到一个不同的集合ChangeColl(我的命名)中,以便以后引起关注(在load事件后),比如重写集合ChangeColl中控件的ViewState状态值。
  若投递值找不到匹配控件,则留下它放在一个TempColl(我的命名)集合中,留待以后再试(为动态控件的产生提供了可能性,
   因为动态创建的控件在创建以后,在回发的时候,它会晚于投递值再次产生)。
6*preLoad事件,仅对页面有效。
7*load事件,页面先触发,然后控件递归触发。在此时用户可以放心的访问控件的视图和属性了。可以在此执行用户的业务逻辑的初始化。
二、处理回发阶段
    1*检测控件状态的变化。
      根据前面的LoadPostData的返回值,来决定是否调用另一个接口函数(RaisePostDataEvent()),它可以点火状态变化事件的发生。
    2*执行服务器端回发事件。
      若控件实现了iPostBackEventHandler接口,则若有回发动作,页面处理器会调用接口方法RaisePostBackEvent(),触发动作事件。
    3*LoadComplete事件,页面独有,表示页面准备阶段结束。用户的事件处理发生在此事件之前。(这在页面渲染之前发生,这就是为什么在事件处理程序中
      Response.write("dds")的显示总在Response流的最前面的原因)
三、页面结束阶段
    1*PreRender事件,先为页面触发,然后为控件递归触发。
    2*PreRenderComplete页面独有。
    3*SaveStateComplete事件,保存视图状态。可以重写SavePageStateToPersistenceMedium() 和this.LoadPageStateFromPersistenceMedium(),来把视图状态
      存到服务器或会话状态中,从而减少页面大小。
    4*Render事件
    5*unload事件,先控件递归后页面。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值