• ASP.NET的页面生命周期


    当我们在浏览器地址栏中输入网址,回车查看页面时,这时会向服务器端(IIS)发送一个request请求,服务器就会判断发送过来的请求页面,  完全识别 HTTP 页面处理程序类后,ASP.NET 运行时将调用处理程序的 ProcessRequest 方法来处理请求,来创建页面对象。通常情况下,无需更改此方法的实现,因为它是由 Page 类提供的。接下来被创建页面对象的ProcessRequest方法使页面经历了各个阶段:初始化、加载视图状态信息和回发数据、加载页面的用户代码以及 执行回发服务器端事件。之后,页面进入显示模式:收集更新的视图状态,生成 HTML 代码并随后将代码发送到输出控制台。最后,卸载页面,并认为请求处理完毕。其中页面对象ProcessRequest方法 完成的这一系列事件的处理过程就是Asp.Net页面生命周期。

    1)页面生命周期的主要阶段包括: 阶段 事件/方法   
    页面初始化          Page_Init  
    加载View State      LoadViewState   
    回发数据处理      LoadPostData   
    页面加载          Page_Load   
    回发通知          RaisePostDataChangedEvent  
    回发事件处理     RaisePostBackEvent  
    页面预渲染       Page_PreRender   
    保存             viewstate SaveViewState   
    Page渲染         Page_Render   
    Page 卸载       Page_UnLoad  

    2)页面生命周期的主要事件:

    PreInit:

    1.检查IsPostBack 属性

    2.动态设置Master Page

    3.动态设置Theme

    4.设置控件的默认值(UniqueId等)

    5.重新创建动态控件(初始化控件),初始化控件的值

    Init: 这个事件发生在所有的控件被初始化,所有的皮肤设置被应用以后。它用来读取或者初始化控件属性。它能够用来注册一些aspx页面中没有指出的控件的事件。

    InitComplete: Use this event for processing tasks that require all initialization to be complete.

    PreLoad: 加载页面的ViewState和所有的控件,然后处理所有的包含在Request实例中的postback数据。

    Load: 这个事件可能是大家最熟悉的了。需要注意的是,Page对象会递归的调用子控件的onload事件直到页面和所有的子控件被加载完成。这个事件主要用来设置控件属性的值,建立数据库连接(通常不这么做)。

    Validation: 如果你的控件要求验证,验证会在这个阶段发生,这个时候你可以检查控件的IsValid属性。跟这个阶段关联的事件是Validate,它有一个可以接受 验证字符串群的重载方法(overload method),这个重载方法执行特定控件群的验证。

    Control events: 这个就不多说了,主要是处理控件的事件,例如click。这也就让我们明白了

    每次我们click一个Button的时候,实际上是要先去执行load事件 然后才执行click事件的,一般我们用!IsPostBack来判断一下从而避免执行不必要的加载逻辑。

    LoadComplete: 页面所有的控件都被加载以后执行,暂时没有想到用来干什么。。。

    PreRender: 在HTML被生成之前这是最后一个事件。每一个页面中的控件都有PreRender的过程。在这里对将要输出的HTML结果进行最后一次修改。

    SaveStateComplete: 在这个时间发生之前,已经保存了所有控件和页面的,任何对page或者控件的改动都不会产生左右。暂时没想到用来干啥。

    Render: 它不是一个事件而是一个方法。工作就是把HTML写回客户端浏览器。

    UnLoad: 页面中的每一个控件都会发生这件事。在控件中,使用这个事件来做清理工作,例如关闭数据库连接等。对与页面本身也是做清理工作,例如关闭打开的文件和数据库连接,或者结束日志或者其它指定的工作。

    需要说明的是,每次Request都会创建一个全新的Page类的实例,所以在页面中的自己定义的字段是不能在两次request中传递值的,需要使用viewstate来存储。

  • 相关阅读:
    vsftpd的详细配置讲解
    ActiveMQ安装与配置
    Apache安装完之后再安装其他模块
    搭建 LAMP apache2.4 + php5.5 + mysql5.5/6 配置文件没有作用的问题
    LAMP apache2.4 + php5.5 + mysql5.5/6
    进制之间的转换
    Mac 常用属性
    关于颜色值透明度的设置
    关于TextView 的属性
    Android 关于软键盘
  • 原文地址:https://www.cnblogs.com/mickeygirl/p/2975708.html
Copyright © 2020-2023  润新知