• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
目标驱动者
目标........努力........生活.........
博客园    首页    新随笔    联系   管理    订阅  订阅

生命周期之ASP.NET页面

了解ASP.NET页面的生命周期

    上大二之后,"生命周期"这个词就经常性的出现在我剩下的大学生活中。《电子商务系统生命周期与传统MIS生命周期的比较》这是我大学学习中的最后一次上台演讲内容。
    在.NET的学习中,也经常看到“生命周期”,包括页面生命周期,控件生命周期,应用程序生命周期等。
    今天我要了解页面的生命周期,要深刻的了解,希望这次了解之后能熟练的应用它。

    1、什么是页面生命周期?
  页面从请求开始到结束,要经过一系列的处理,这一系列的处理就形成了一个页面的生命周期。
    2、页面在他的生命周期里都做了些什么呢?
      在他的生命周期里做的一系列事情包括:页面的初始化、控件的实例化、状态保存和维护、运行事件代码及呈现等。 
  3、为什么要了解它?
      了解页的生命周期非常重要,这样就能在合适的生命周期阶段编写代码,以达到预期效果。此外,如果开发自定义控件,则必须熟悉页生命周期,从而正确地初始化控件,使用视图状态数据填充控件属性以及运行所有控件行为逻辑。(MSDN)

 以下是生命周期中的各阶段:
  1  页面请求: 用户请求页面时,ASP.NET考虑是否需要编译或分析此页面,或者不运行直接从缓存中返回用户的页面请求.这一阶段并不属于page life cycle,他实际上是属于IIS处理部分.稍后详解.

      2  开始阶段:此时设置好page的一些属性,比如Request,Response 等.页面还将确定请求是回发的还是新的.同时设置IsPostBack属性.此外控件,页面的区域性属此也被设置好.

      3 初始化阶段(Initializing):此过程创建服务器控件的实例.此时的页面控件是没有任何数据的.页面主题也在这时确定.(Event:Page_Init) 

      4 装载View State(Loading View State): 这个时候载入View State 数据,如果是第一次请求,则没有数据.(Event:LoadViewState)

      5 装载PostBack Data(Loading the PostBack Data):这个阶段服务器搜寻相应的数据传给已经装载了数据的客户端.
(Event:LoadPostData)

      6 装载页面(Loading): 加载期间,如果当前请求是回发请求,则将使用从视图状态和控件状态恢复的信息加载控件属性。这阶段控件被加载到页面上.此时可以编写代码来改变控件的设置或显示文本在页面上.(Event:Page_Load)

      7 页面事件处理(Page Events Handler): 这个阶段可以处理页面控件的相关事件,如Button的Click事件等. 验证控件也在此时执行.  

      8 预呈现(PreRending): 此时可对控件的属性做"最后"的修改,之前的修改都会被这个阶段的修改给覆盖掉.为控件的呈现做准备.(Event:Page_PreRending)

      9 保存(Saving): 这个阶段保存ViewState的数据.即保存在当前请求与之前请求之间的控件状态信息,此时相应的控件更改事件也随之发生.例如:当一个TextBox的内容发生改变后,此时保存了TextBox的新数据,同时TextBox_Change事件也发生了.(Event:SaveViewSate)

      10 呈现(Rending):这个阶段是为了显示各服务器控件在页面上,同是为各个服务器控件创建HTML 标签.在这个阶段也可以修改控件的属性或值,我是经常在这个事件里写代码去控制控件.但还是建议在PreRending中做最后的控件处理.(Event:Page_Rending)

      11 Disposing: 在这个阶段清除所有的作业,包括被关闭控件执行的文件和数据库连接等;

      12 Unloading: 在这个阶段清除所有的作业,被控件实例,这是生命周期中的最后一个阶段;(Event:Page_UnLoad)

  请注意有关页生命周期的以下附加信息(MSDN):

  • 各个 ASP.NET 服务器控件都有自己的生命周期,该生命周期与页生命周期类似。例如,在相应的页事件期间将调用控件的 Init 和 Load 方法。如果页上包含控件,则将首先调用控件的 Init 方法,然后再调用页的 Init 方法。但是,将在调用控件的 Load 方法之前先调用页的 Load 方法。

  • 通过处理控件的事件,可以自定义控件的外观或内容。例如,所有的控件都将引发 Init、Load 和 Unload 事件,但是页开发人员通常不处理这些事件。而是通常处理特定于控件的事件,如 Button 控件的 Click 事件和 ListBox 控件的 SelectedIndexChanged 事件。在某些情况下,可能也需处理控件的 DataBinding 或 DataBound 事件。有关更多信息,请参见各个控件的类参考主题以及开发自定义 ASP.NET 服务器控件。

  • 除了处理由页引发的事件以外,还可以重写页的基类中的方法。例如,可以重写页的 InitializeCulture 方法( protected  override void  InitializeCulture()),以便动态设置区域性信息。注意,在使用 Page_event 语法创建事件处理程序时,将隐式调用基实现,因此无需在方法中调用它。例如,无论是否创建 Page_Load 方法,始终都会调用页基类的 OnLoad 方法。但是,如果使用 override 关键字(在 Visual Basic 中为 Overrides)重写页的 OnLoad 方法,则必须显式调用基方法。例如,如果在页中重写 OnLoad 方法,则必须调用 base.Load(在 Visual Basic 中为 MyBase.Load)以运行基实现。

posted @ 2008-11-06 11:49  IsionWu  阅读(292)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3