温习:ASP.NET页面生命周期

<!-- 作者信息等 -->

<script type="text/javascript"> $(document).ready(function() { $(".tip").click(function() { $(".tip").remove(); $.cookie('close_tip_c','hidden',{path: '/'}); }); }); //if ($.cookie('close_tip_c')) $(".tip").remove(); </script>

<!-- 页码和简介 -->

摘要:ASP.NET 页面生命周期虽然是最基础的东东,但我发现很多人不能准确地的说出,可能多数程序人员只是对深层技术感兴趣的原因吧?

ASP.NET 页面生命周期虽然是最基础的东东,但我发现很多人不能准确地的说出,可能多数程序人员只是对深层技术感兴趣的原因吧?可是如果忘记了最基础的东西,有时会给你的开发制造很大的麻烦。现在把MSDN上的ASP.NET页面生命周期贴出来,大家温习一下吧(温习之前请问一下自己你知道吗):

ASP.NET 页运行时,此页将经历一个生命周期,在生命周期中将执行一系列处理步骤。这些步骤包括初始化、实例化控件、还原和维护状态、运行事件处理程序代码以及进行呈现。了解页生命周期非常重要,因为这样做您就能在生命周期的合适阶段编写代码,以达到预期效果。此外,如果您要开发自定义控件,就必须熟悉页生命周期,以便正确进行控件初始化,使用视图状态数据填充控件属性以及运行任何控件行为代码。(控件的生命周期基于页的生命周期,但是页引发的控件事件比单独的 ASP.NET 页中可用的事件多。)

常规页生命周期阶段
一般来说,页要经历下表概述的各个阶段。除了页生命周期阶段以外,在请求前后还存在应用程序阶段,但是这些阶段并不特定于页。有关更多信息,请参见 ASP.NET 应用程序生命周期概述。

1、页请求
 页请求发生在页生命周期开始之前。用户请求页时,ASP.NET 将确定是否需要分析和编译页(从而开始页的生命周期),或者是否可以在不运行页的情况下发送页的缓存版本以进行响应。
 
2、开始
 在开始阶段,将设置页属性,如 Request 和 Response。在此阶段,页还将确定请求是回发请求还是新请求,并设置 IsPostBack 属性。此外,在开始阶段期间,还将设置页的 UICulture 属性。
 
3、页初始化
 页初始化期间,可以使用页中的控件,并将设置每个控件的 UniqueID 属性。此外,任何主题都将应用于页。如果当前请求是回发请求,则回发数据尚未加载,并且控件属性值尚未还原为视图状态中的值。
 
4、加载
 加载期间,如果当前请求是回发请求,则将使用从视图状态和控件状态恢复的信息加载控件属性。
 
5、验证
 在验证期间,将调用所有验证程序控件的 Validate 方法,此方法将设置各个验证程序控件和页的 IsValid 属性。
 
6、回发事件处理
 如果请求是回发请求,则将调用所有事件处理程序。
 
7、呈现
 在呈现之前,会针对该页和所有控件保存视图状态。在呈现阶段中,页会针对每个控件调用 Render 方法,它会提供一个文本编写器,用于将控件的输出写入页的 Response 属性的 OutputStream 中。
 
8、卸载
 完全呈现页并已将页发送至客户端、准备丢弃该页后,将调用卸载。此时,将卸载页属性(如 Response 和 Request)并执行清理。

生命周期事件
在页生命周期的每个阶段中,页将引发可运行您自己的代码进行处理的事件。对于控件事件,通过以声明方式使用属性(如 onclick)或以使用代码的方式,均可将事件处理程序绑定到事件。

页还支持自动事件连接,即,ASP.NET 将查找具有特定名称的方法,并在引发了特定事件时自动运行这些方法。如果 @ Page 指令的 AutoEventWireup 属性设置为 true(或者未定义该属性,因为该属性默认为 true),页事件将自动绑定至使用 Page_事件的命名约定的方法(如 Page_Load 和 Page_Init)。有关自动事件连接的更多信息,请参见 ASP.NET Web 服务器控件事件模型。

下表列出了最常用的页生命周期事件。除了列出的事件外还有其他事件;不过,大多数页处理方案不使用这些事件。而是主要由 ASP.NET 网页上的服务器控件使用,以初始化和呈现它们本身。如果要编写自己的 ASP.NET 服务器控件,则需要详细了解这些阶段。有关创建自定义控件的信息,请参见 开发自定义 ASP.NET 服务器控件。

01、PreInit
 使用该事件来执行下列操作:

检查 IsPostBack 属性来确定是不是第一次处理该页。

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

动态设置主控页。

动态设置 Theme 属性。

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

注意 
如果请求是回发请求,则控件的值尚未从视图状态还原。如果在此阶段设置控件属性,则其值可能会在下一事件中被重写。
 
 
02、Init
 在所有控件都已初始化且已应用所有外观设置后引发。使用该事件来读取或初始化控件属性。
 
03、InitComplete
 由 Page 对象引发。使用该事件来处理要求先完成所有初始化工作的任务。
 
04、PreLoad
 如果需要在 Load 事件之前对页或控件执行处理,请使用该事件。

在 Page 引发该事件后,它会为自身和所有控件加载视图状态,然后会处理 Request 实例包括的任何回发数据。
 
05、Load
 Page 在 Page 上调用 OnLoad 事件方法,然后以递归方式对每个子控件执行相同操作,如此循环往复,直到加载完本页和所有控件为止。

使用 OnLoad 事件方法来设置控件中的属性并建立数据库连接。
 
06、控件事件
 使用这些事件来处理特定控件事件,如 Button 控件的 Click 事件或 TextBox 控件的 TextChanged 事件。

注意 
在回发请求中,如果页包含验证程序控件,请在执行任何处理之前检查 Page 和各个验证控件的 IsValid 属性。
 
 
07、LoadComplete
 对需要加载页上的所有其他控件的任务使用该事件。
 
08、PreRender
 在该事件发生前:

Page 对象会针对每个控件和页调用 EnsureChildControls。

设置了 DataSourceID 属性的每个数据绑定控件会调用 DataBind 方法。有关更多信息,请参见下面的数据绑定控件的数据绑定事件。

页上的每个控件都会发生 PreRender 事件。使用该事件对页或其控件的内容进行最后更改。
 
09、SaveStateComplete
 在该事件发生前,已针对页和所有控件保存了 ViewState。将忽略此时对页或控件进行的任何更改。

使用该事件执行满足以下条件的任务:要求已经保存了视图状态,但未对控件进行任何更改。
 
10、Render
 这不是事件;在处理的这个阶段,Page 对象会在每个控件上调用此方法。所有 ASP.NET Web 服务器控件都有一个用于写出发送给浏览器的控件标记的 Render 方法。

如果创建自定义控件,通常要重写此方法以输出控件的标记。不过,如果自定义控件只合并标准的 ASP.NET Web 服务器控件,不合并自定义标记,则不需要重写 Render 方法。有关更多信息,请参见 开发自定义 ASP.NET 服务器控件。

用户控件(.ascx 文件)自动合并呈现,因此不需要在代码中显式呈现该控件。
 
11、Unload
 该事件首先针对每个控件发生,继而针对该页发生。在控件中,使用该事件对特定控件执行最后清理,如关闭控件特定数据库连接。

对于页自身,使用该事件来执行最后清理工作,如:关闭打开的文件和数据库连接,或完成日志记录或其他请求特定任务。

注意 
在卸载阶段,页及其控件已被呈现,因此无法对响应流做进一步更改。如果尝试调用方法(如 Response.Write 方法),则该页将引发异常。

MSDN原文:http://msdn.microsoft.com/zh-cn/library/ms178472(VS.80).aspx

温习:ASP.NET页面生命周期相关推荐

  1. [转]ASP.NET页面生命周期描述

    ASP.NET页面生命周期描述 vigorID:Vigorcsdn 在以前写个一篇关于ASP.NET页面生命周期的草稿,最近又看了看ASP.NET,做个补充,看看页面初始过程到底是怎么样的 下面是AS ...

  2. ASP.NET页面生命周期描述

    附一篇文章:http://blog.csdn.net/Vigorcsdn/article/details/572552 在以前写个一篇关于ASP.NET页面生命周期的草稿,最近又看了看ASP.NET, ...

  3. 记不住ASP.NET页面生命周期的苦恼

    介绍 对于ASP.NET开发者,理解ASP.NET的页面生命周期是非常重要的.主要是为了搞明白在哪里放置特定的方法和在何时设置各种页面属性.但是记忆和理解页面生命周期里提供的事件处理方法(method ...

  4. 详解ASP.NET页面生命周期事件

    下面是ASP.NET页面初始的过程: 1. Page_Init(); 2. Load ViewState; 3. Load Postback data; 4. Page_Load(); 5. Hand ...

  5. Asp.Net页面生命周期(多图)

    抽空用viso画了请求处理模型图 1.浏览器实际上是一个Socket客户端,它向服务器发送请求报文 2.请求报文被封装为http请求,通过socket发送到IIS服务器 3.内核模式包含一个Http. ...

  6. ASP.NET页面生命周期与应用程序生命周期

    页面生命周期 页面生命周期执行一系列步骤:页面的初始化.实例化控件.还原和维护状态.运行事件处理程序代码.呈现.为了在合适的阶段执行所需的代码,所以要对页面生命周期非常熟悉.在页生命周期的各个阶段,页 ...

  7. ASP.NET页面生命周期概述(转载)

    ASP.NET 页运行时,此页将经历一个生命周期,在生命周期中将执行一系列处理步骤.这些步骤包括初始化.实例化控件.还原和维护状态.运行事件处理程序代码以及进行呈现.了解页的生命周期非常重要,这样就能 ...

  8. ASP.NET页面生命周期概述

    近期学习asp.net自定义控件与组件,所以把msdn原文贴出来,以供参考. 原文链接:http://msdn.microsoft.com/zh-cn/library/ms178472(VS.80). ...

  9. ASP.Net请求处理机制初步探索之旅 - Part 4 WebForm页面生命周期

    开篇:上一篇我们了解了所谓的请求处理管道,在众多的事件中微软开放了19个重要的事件给我们,我们可以注入一些自定义的业务逻辑实现应用的个性化设计.本篇,我们来看看WebForm模式下的页面生命周期. ( ...

最新文章

  1. SCCM 2016 使用PXE 部署操作系统(四)
  2. 64 DLL动态链接库换一台电脑就不能加载
  3. python编程零基础免费网课-Python网课推荐——免费学习Python编程
  4. python爬虫实例-python3.7简单的爬虫实例详解
  5. 如何在visio2010的框图中插入公式?
  6. Docker系统六:Docker网络管理
  7. Direct ByteBuffer学习
  8. ETL学习总结(2)——ETL数据集成工具之kettle、sqoop、datax、streamSets 比较
  9. python 文件批量转换格式_python实现快速文件格式批量转换的方法
  10. python需要的项目依赖包的使用
  11. 基于决策树构建鸢尾花数据的分类模型并绘制决策树模型
  12. MongoDB双机热备份
  13. 智能优化算法课程设计
  14. 台达触摸屏和vfd-m变频器通讯控制监视程序 使用modbus rtu通讯方式,在触摸屏可以直接控制变频器
  15. django问题mysqlclient 1.4.0 or newer is required
  16. 迷你世界箱子里物品无限取
  17. 关于实名认证上线时无法立即返回实名认证结果的问题
  18. 两个三维向量的夹角计算
  19. debussy和nlint常用快捷键
  20. 网上书城项目前端界面设计及编码

热门文章

  1. 训练日志 2019.7.25
  2. 图论 —— 生成树 —— 最小生成树 —— Prim
  3. 信息学奥赛C++语言:猴子选大王
  4. 信息学奥赛C++语言:被3整除
  5. 29 FI配置-财务会计-外币评估-分配到评估范围和会计核算原则
  6. 火柴人小程序linux,火柴人你瞅啥小程序
  7. oracle数据表空间与数据文件,oracle 操作表空间和数据文件
  8. 装cv2加速_手动安装OpenCV下的IPP加速库
  9. netty 远程主机强迫关闭了一个现有的连接_死磕netty系列《一、netty基础概念》...
  10. thinkpad bios联想logo_最强12吋ThinkPad,X201终极改造:8代酷睿+双内存+NVMe