• asp.net常规页生命周期阶段列表和事件列表


    当我们使用asp.net开发网站,每运行一个页面,这个页面都将经历一个生命周期。了解页的生命周期非常重要,因为这样我们才能在合适的生命周期编写代码实现预期效果。网上有一句话概括非常精辟:"Do the right thing at the right time in the right place."。微软的文档给出的ASP.NET生命周期如下:
    1 Page Request  --页面请求
    2 Start  --开始
    3 Page Initialization --页初始化
    4 Load  --加载
    5 Validation --验证
    6 Postback event handling --回发事件处理
    7 Rendering --呈现
    8 Unload  --卸载
    一、生命周期阶段列表
    下面来看看每个阶段对应的具体说明:
    1、页请求
    页请求发生在页生命周期开始之前。用户请求页时,asp.net将确定是否需要分析和编译页,或者是否可以在不运行页的情况下,发送缓存版本以进行响应。
    2、开始
    在开始阶段,将设置页属性,如Request和Response。在此阶段,页还将确定请求是回发请求还是新请求,并设置ispostback属性。此外,在开始阶段期间,将设置页的UICulture属性。
    3、页初始化
    该阶段,可以使用页中的控件,并将设置每个控件的UniqueID属性。此外,任何主题都将应用于页。如果当前请求是回发请求,则回发数据尚未加载,并且控件属性值尚未还原为视图状态中的值。
    4、加载
    该阶段,如果当前请求是回发请求,则将使用从视图状态和控件状态恢复的信息加载控件属性。
    5、验证
    在验证期间,将调用所有验证控件的Validate方法,此方法将设置各个验证程序控件和页的IsValid属性。
    6、回发事件处理
    如果请求是回发事件,则将调用所有事件处理程序。
    7、呈现
    在呈现期间,视图状态将被保存到页,然后页将调用每个控件,以将其呈现的输出提供给页的Response属性的OutPutStream。
    8、卸载
    完全呈现页将页发送至客户端并准备丢弃时,将调用卸载。此时,将卸载页属性如Request,Response等,并进行清理。
    二、生命周期事件列表(常见)
    1、Page_PreInit
    典型应用:
      使用IsPostBack属性确定是否是第一次处理该页;
      创建或者重新创建动态控件;
      动态设置母版页;
      动态设置Theme属性;
      读取或者设置配置文件属性值。
    注意:如果请求是回发请求,则控件的值尚未从视图状态还原。如果在此阶段设置控件属性,则值可能会在下一阶段被改写。
    2、Page_Init
    典型应用:
      读取或初始化控件属性
    3、Page_Load
    典型应用:
      读取或更新控件属性
    4、Controlevents
    典型应用:
      执行特定于应用程序的处理:
            如果页包含验证程序控件,则在执行任何处理之前坚持页和各个验证控件的IsValid属性;
            处理特定事件,如Button的Click事件
    5、Page_PreRender
    典型应用:
      对页的内容进行最后更改
    6、Page_Unload
    典型应用:
      执行最后的清理工作,可能包括:
            关闭打开的文件和数据库连接;
            完成日志记录或其它特定于请求的任务。
      这个事件里要注意:因为在卸载阶段,页及其控件已被呈现,因此无法对响应流做进一步更改。如果尝试调用方法如Response.Write方法,则该页会引发异常。
    好了,最后来一个经典的代码实例来回顾一下前面讲的主要内容。Code is cheap。看代码了:
    Code


    作者:Jeff Wong
    出处:http://jeffwongishandsome.cnblogs.com/
    本文版权归作者和博客园共有,欢迎围观转载。转载时请您务必在文章明显位置给出原文链接,谢谢您的合作。

  • 相关阅读:
    在Oracle的FORM中高亮显示鼠标点击或光标所在的行
    Attempt to refer to a unregistered pool by its alias 'MySQL'
    C#中手机号验证,邮箱验证
    Caused by: java.lang.ClassNotFoundException:org.apache.commons.logging.LogFactory
    org.apache.jasper.JasperException: /existingstudent.jsp(4,4) Invalid directive
    C#中使用cookies
    【old】简单易用的鹰眼类源代码下载
    MapGuide Tips如何限制MapGuide Ajax Viewer的缩放范围
    MapGuide应用开发系列(八)MapGuide Studio准备地图之地图(Map)
    基于MapGuide的在线WebGIS站点介绍
  • 原文地址:https://www.cnblogs.com/jeffwongishandsome/p/1423970.html
Copyright © 2020-2023  润新知