ASP.NET 页面生存周期概览

ASP.NET 页面运行时会通过生命周期来完成一系列的处理步骤。包括初始化,控件实例化,状态恢复和维护,运行事件处理代码,以及外观的呈现。了解页面生命周期是重要的,可以根据需要针对特定情景编写处理代码。另外,开发自定义控件也必须熟悉页面生命周期中正确的控件初始化指令,使用视图状态数据的控件属性,以及运行控件行为逻辑(控件的生命周期依赖于页面生命周期,因此页面会为控件引发比自己更多的事件)。

页面生命周期的一般情况

一般情况下,页面通过下表列出的情景大纲。除了页面生命周期情景之外,在请求开始和结束的时候还会发生除页面之外的应用程序情景。

情景描述

请求页面

页面请求发生在页面生命周期开始之前。当用户发送页面请求,ASP.NET 检测是否需要对页面进行处理或编译(页面生命周期由此开始),也可以直接用已缓存的页面作为回应。

开始

在该步骤中会设置页面的 RequestResponse 属性。页面会根据请求是否回传或新建来设置 IsPostBack 属性。另外,在开始时,页面还会设置 UICulture 属性。

页面初始化

页面初始化时,页面控件会生效并为每个控件设置 UniqueID 属性。主题定义也被作用于页面。如果当前请求已回传,回传的数据并不会被读取,且视图状态也不保存任何控件的属性值。

读入

读入时,如果当前请求已回传,控件属性会从视图状态和控件状态中读入。

验证

验证时会调用所有验证器的 Validate 方法,并分别为页面中的验证器设置 IsValid 属性。

处理回传事件

如果请求已回传,将调用所有事件处理器。

呈现

页面呈现时会保存视图状态,并将所有控件输出通过 ResponseOutputStream 对象进行呈现。

卸载

当页面完全呈现后调用,且发送到客户端。同时,页面的 ResponseRequest 属性也被卸载并清除。

生命周期事件

在每个页面生命周期情景下,可以对页面引发的事件编写自定义代码进行处理。至于控件事件,则通过绑定属性(如 OnClick)或编写代码的方式进行事件处理器绑定。

页面也支持自动事件的触发,ASP.NET 会监视并在特定事件引发后自动运行这些有特定名称的事件。如果 @ 页面指令的 AutoEventWireup 参数设置成 true(默认值为 true),页面事件就会自动绑定到以“Page_事件”格式命名的方法(如 Page_LoadPage_Init)。

下表列出部分页面生命周期中的常用事件。还有一些未被列出的原因是不常用,且主要用于 ASP.NET Web 页面对控件的初始化和呈现。除非编写自定义 ASP.NET 服务器控件,就需要了解这些情景。

页面事件典型用途

Page_PreInit

  • 使用 IsPostBack 属性检测页面被回传还是第一次被请求。

  • 创建或重建动态控件。

  • 动态设置模板页。

  • 动态设置 Theme 属性。

  • 读取或设置档案属性。

注意:如果请求被回传,控件的值就不能从视图状态中恢复。在这个时候设置的控件属性,将会覆盖下一个情景中的值。

Page_Init

  • 读取或初始化控件属性。

Page_Load

  • 读取并更新控件属性。

控件事件

完成应用程序处理:

  • 如果页面中包含验证器控件,则在进行任何操作之前先检查所有验证控件的 IsValid 属性。

  • 处理指定事件(如 Button 控件的 Click 事件)。

Page_PreRender

  • 完成页面控件的最后更改。

Page_Unload

完成最后的清除工作,其中包括:

  • 关闭文件和数据库连接。

  • 完成登入或其他请求任务。

注意:在卸载时,页面和控件都会重新呈现,可进一步对回应过程进行修改。如果尝试对 Response.Write 之类的方法进行,页面就会产生并抛出一个异常。

附加的页面生命周期考虑因素

请注意下列关于页面生命周期的附加信息:

  • 与页面一样,每个 ASP.NET 服务器控件都拥有属于自已的生命周期。比如,控件的 InitLoad 方法会在相应的页面事件中得到调用。而页面控件的 Init 方法只能在页面 Init 方法之后调用。但是,页面的 Load 方法能够在控件 Load 方法之前被调用。

  • 通过控件事件可以自定义控件的外观和内容。比如,所有控件都引发 InitLoadUnload 等事件,尽管开发者并不经常处理这些事件。但在处理控件事件时却经常需要用到(如 Button 控件的 Click 事件和 ListBox 控件的 SelectedIndexChanged 事件)。在某些情况下还有可能处理控件的 DataBindingDataBound 事件。

  • 另外,在处理页面生命周期事件时,可以重载 Page 派生类的方法。比如,重载页面的 InitializeCulture 方法动态设置文化信息。创建以“Page_事件”格式命名的事件重载处理时,会先隐式调用基类的实现,因此不需要编写代码进行显式调用。比如,不管是否已经重载页面的 Page_Load 方法。ASP.NET 始终会自动调用页面基类的 OnLoad 方法。但是,使用 override 关键字重载页面的 OnLoad 方法时就需要显式调用基类的实现。比如,重载页面的 OnLoad 方法时必须编写 base.Load (Visual Basic 的写法是 MyBase.Load)来明确地运行基类的实现。

转载于:https://www.cnblogs.com/Laeb/archive/2006/12/07/585377.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/424068.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第十四题: 以下代码的输出结果是?

第十四题: 以下代码的输出结果是? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public class B { public static B t1 new B(); public static B t2 new B(); { System.out.println("构造块"); } static { Syst…

虚拟化

1 什么是虚拟化 在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不…

第一百二十三期:免费在线制图神器!不上水印支持中文版,GitHub标星已破1万2

又一免费制图神器来袭!打开网页就能使用,支持中文版,也不会给你上水印。 作者:乾明 又一免费制图神器来袭! 名为draw.io,打开网页就能使用,支持中文版,也不会给你上水印。 不只是…

WPF/E CTP Quick Start - 第五部分:公有图形属性(翻译)

一些属性能够被应用在所有的WPF/E的UIElement对象上:Canvas,shapes和TextBlock。这篇文档描述了这些对象所具有的公有图形属性。 这篇文档包含了以下部分: Opacity属性 OpacityMask属性 Clip属性 RenderTransform属性 下面该做什么呢&#xf…

常用javascript脚本

BS开发中常用的Javascript技术 一、验证类 1、数字验证内 1.1 整数 1.2 大于0的整数 (用于传来的ID的验证) 1.3 负整数的验证 1.4 整数不能大于iMax 1.5 整数不能小于iMin 2、时间类 2.1 短时间,形如 (13:04:06) 2.2 短日期,形…

第一百二十四期:2019年臭名昭著的勒索软件,网络钓鱼和僵尸网络

Webroot发布了年度恶意软件列表,展示了2019年最臭名昭著的网络安全威胁。从攻击次数最多的勒索软件和加密挖矿,到破坏最大的网络钓鱼攻击,显然,全球网络威胁正在变得更为先进且难以预测。 作者:kirazhou 勒索软件 在…

好久没发胡说八道的贴了,今天发一贴

看了老翅寒暑 [真实案例:给所有想要创业的朋友的一个管理方面的测试题]一贴http://www.cnblogs.com/BigTall/archive/2006/12/20/597896.html这是一个真实的事件,我把它转化为了一个测试题目,问过很多朋友,到目前为止我认为答满分…

N元语法模型的数据稀疏问题解决方法之一:Good-Turing平滑

转载自时空霹雳 在统计语言模型章节中,我们谈到了N元语法模型不可避免的一个问题,就是数据稀疏,其原因是大规模语料统计与有限语料的矛盾。根据齐普夫(Zipf)法则,我们能够推测知零概率问题不可避免。数据稀…

错误: 在类中找不到 main 方法, 请将 main 方法定义为:public static void main(String[] args)否则 JavaFX 应用程序类必须扩展javafx.ap

最近在使用eclipse编写java程序时遇到这样一个问题: 错误在类中找不到main方法,请将main方法定义为 public static void main(String[] args)否则 JavaFX 应用程序类必须扩展javafx.application.Application 看到这样的问题让我一头雾水,因为…

求xpath

<root><row a "1" b"asd"/>.. . <row a "5" b"adsfasd"/><row a "5" b"要这个"/> .. . <row a "sdfas" b "23423sfas"…

第十章 条件随机场CRF

文章目录1 条件随机场定义1.1 马尔科夫随机场1.1.1 用图模型表示概率1.1.3 三个马尔科夫性1.1.3 重点再看局部马尔科夫性1.2 马尔科夫随机场的因子分解1.3 条件随机场1.4 线性链条件随机场2线性链条件随机场的表示形式2.1 参数化形式2.2 简化形式2.3 矩阵形式3 条件随机场的概率…

js中同名的函数的调用情况

转自&#xff1a;https://www.cnblogs.com/wshiqtb/p/3480597.html html中如果出现函数同名时&#xff1a;如果有多个外部引入的js文件,例如a.js和b.js(引入顺序假定是a.js&#xff0c;然后是b.js)&#xff0c;同时html中本身也有内部的js.那么针对出现函数名一样的情况时&…

第一百二十五期:程序员的自我救赎,使用Python开发性格分析工具

如此不均衡的贫富差距&#xff0c;各行业的领导者如何能管理好公司&#xff0c;让员工们既努力产出&#xff0c;又能安于现状呢?每个领导者必学的一门课程就是职场心理学。只有你充分了解员工心理与对应的行为表现&#xff0c;才能从容的掌控各类型的人员&#xff0c;从而达到…

笛卡尔乘积算法的体现

一个商品有多项属性&#xff0c;多项属性的组合就产生不同的商品型号如&#xff1a;衣服&#xff1a;颜色&#xff1a;红、绿尺寸&#xff1a;大、中、小产生的系列就有&#xff1a;红|大、红|中、红|小、绿|大、绿|中、绿|小如果商品的属性不至两个&#xff0c;则产生的系列会…

知识图谱基础

本系列是学习七月算法知识图谱课程的笔记。感觉自己完全就是一个托儿。前面七月算法机器学习&#xff0c;七月算法深度学习的笔记。现在又来了知识图谱课程的笔记。 文章目录1 why知识图谱2 知识图谱前世今生3 知识图谱相关技术4 知识图谱应用案例1 why知识图谱 没有知识图谱&…

第一百二十六期:代码以外的生存之道,献给每位入了坑的码农

本篇内容主要是对这本书的一个总结概括&#xff0c;也希望能用作抛砖引玉&#xff0c;让读者在看完之后&#xff0c;对这本书有所兴趣&#xff0c;或者希望能让读者对代码以外的需要做的事情更加积极明朗一点。 作者&#xff1a;码农三哥 前言 最近刚刚读完了一本书&#xf…

DataDirectory是什么?

asp.net 2.0有一个特殊目录app_data,通常Sql server 2005 express数据文件就放在这个目录&#xff0c;相应的数据库连接串就是&#xff1a;connectionString"…… data source.\SQLEXPRESS;Integrated SecuritySSPI;AttachDBFilename|DataDirectory|data.mdf;User Instanc…

【UOJ 51】最接近神的人

【题目描述】&#xff1a; 破解了符文之语&#xff0c;小FF开启了通往地下的道路。当他走到最底层时&#xff0c;发现正前方有一扇巨石门&#xff0c;门上雕刻着一幅古代人进行某种活动的图案。而石门上方用古代文写着“神的殿堂”。小FF猜想里面应该就有王室的遗产了。但现在的…

知识图谱存储与搜索

本系列是学习七月算法知识图谱课程的笔记 知识图谱存储是一个技术活。根据数据量以及关系复杂程度可能会选择不同的介质。课程里面直接用了neo4j。 讲了neo4j安装、语法、建库、添加数据、导入数据、查询数据。 最后讲了在应用中的一些高级查询。例如朋友圈检测、欺诈团检测。…

第一百二十七期:程序员41岁创业逆袭成全美最受欢迎CEO,公司市值近200亿美金

袁征&#xff08;Eric Yuan&#xff09;在国内鲜为人知&#xff0c;却在硅谷的商业世界&#xff0c;创造了华人新的可能性——带领公司成功上市&#xff0c;成为全美国上市公司当中、美国面向全球的企业里估值最高的华人CEO。 作者&#xff1a;新芽NewSeed 导语&#xff1a;袁…