• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

tgbaoli

好记性不如烂笔头
  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

ASP.NET页生命周期概述

ASP.NET页被翻译输出到浏览器的过程可分为几个阶段,这些阶段在页面的创建和翻译中有各自不同的目的.了解页面的生命周期非常重要,这样就能在合适的生命周期阶段编写代码,以达到预期效果.要记住的一个关键概念是,不论何种情况下,一个ASP.NET页的实例化和销毁是在同一个请求下完成的.

一、  下面例出了常规页生命周期所经历的若干阶段:

 (1) 、请求页面: 页面的请求发生在页面生命周期开始之前.即页面实例化之前.当用户请求位于Web服务器上的某页面时,ASP.NET检查缓存中是否存在该页面的翻译输出,若有,则直接将缓存中的结果返回给客户端,略去ASP.NET页生命周期中的其他阶段;若无,则进入下一个阶段,即页面开始阶段.

 (2)、页面开始: 在这个阶段,页面被实例化,输入/输出属性Request 和Response被设置。此外,ISPostback属性被设置,该属性说明请求是一个新请求,还是由以前翻译输出的ASP.NET页所发起的请求。还有UICulture属性被设置。

(3)、页初始化:在初始化阶段,控件被实例化(将设置每个控件的UniqueID属性),并且页面的层次被构造。此外,主题和外观信息被应用到页面。如果当前请求是回发请求,则回发数据尚未加载,并且控件的属性此时并没有还原为视图状态的值。

(4)、加载:在加载阶段,如果当前请求是一个回递,则控件的属性将从视图状态赋值。

(5)、确认(验证):在确认(验证)期间,将确认页面中所有控件的状态,将调用页面中各控件的Validate方法,从而确定了页面的IsValid 属性的状态。确认阶段用于对用户的输入施加规则约束。

(6)、回递事件处理:如果请求是一个回递,则将调用所有事件处理程序。诸如鼠标点击、索引改变等事件的处理。重要的一点是要记住,事件处理器是在页面的加载阶段完成之后才被调用。

(7)、呈现(翻译):在呈现期间,视图状态将被保存到页,然后也将调用每个控件,以将其呈现的输出提供给页的Response属性的OutputStream.

(8)、卸载:当完全呈现页,即页完全翻译输出,其他控件都不再产生翻译输出时,便进入卸载阶段。

二、页面生命周期中的事件

(1)、Page_PreInit : 该事件在初始化阶段的开始被调用。典型的使用有

                                                 + 使用IsPostBack属性确定是否是第一次处理该页

                                                 +创建或重新创建动态控件

                                                  +动态设置主控页

                                                  +动态设置Theme属性

                                                   +读取或设置配置文件属性值

注意:如果请求是回发请求,则控件的值尚未从视图状态还原。如果在此阶段设置控件属性,则其值可能会在下一阶段被改写。

(2)、Page_Init:在初始化阶段被调用,用来对控件属性初始化。

(3)、Page_Load:读取和更新已有的控件属性。在这个阶段,控件属性已经根据视图状态被重新设置。

(4)、控件事件:调用控件自身的事件,例如响应鼠标电击、改变ListBox的索引值等等。如果页面有验证控件,在调用事件处理器之前,需要检查控件和页面的IsValid状态

(5)、Page_PreRender:对页面进行最后的更改

(6)、Page_Unload :该事件在ASP.NET丢弃页面来处理成本较高的数据库连接等资源之前被调用。此事件也常常用于记录最终的日志和跟踪信息。

posted on 2008-08-20 16:46  铁山  阅读(168)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3