页面生面周期


#


事件或方法


功能


描述


1


Init 事件


页面初始化


页面生存周期中的第一个阶段是初始化。当 Init 事件发生时,在.aspx 源文件中静态声明的所有控件都已实例化并取其默认值。应该注意的是,这时视图状态信息还不可用。


2


LoadViewState 方法(PostOnly)


加载视图状态


可以重写 LoadViewState 方法来自定义状态还原。


3


LoadPostData 方法


处理回发数据


处理传入窗体数据。


4


Load 事件


加载页面


页面控件初始化完成并反映了客户端的数据。


5


RaisePostDataChangedEvent 方法


回发更改通知


引发更改事件。


6


RaisePostBackEvent 方法


处理回发事件


处理引起回发的客户端事件,并在服务上引发相应事件。


7


PreRender 事件


页面预呈现


各个控件可利用这个很好的时机,以便执行任何需要在保存视图状态和呈现输出结果的前一刻完成的最后一些更新操作。


8


SaveViewState 方法


保存视图状态


将ViewState属性保存到字符串中,重写 SaveViewState 方法可以修改 ViewState 属性。


9


Render 方法


呈现页面


重写 Render 方法,即可更改各个控件的呈现机制。该方法获取一个 HTML 编写器对象,并使用该对象聚集所有将针对该控件生成的HTML 文本。Page 类的 Render 方法的默认实现方式包括对所有成员控件的递归调用。对于每个控件,页面都调用 Render 方法并将 HTML 输出放入高速缓存。


10


Unload 事件


卸载页面


Unload 事件是一个页面的最后生存标志,该事件在页面对象被解除之前发生。在此事件中,您应该释放可能占用的任何关键资源(例如,文件、图形对象、数据库连接)。在此事件之后,浏览器收到 HTTP 响应数据包并显示页面。


11


Dispose 方法


处置


是否对昂贵资源的引用。

当一个页面请求发送到WEB服务器时,不论该事件是由页面提交还是由页面重定向而激发的,页面在其被创建到释放的过程中都会运行一系列的事件。一个ASP.NET页面从被创建到释放的过程包含10个事件。

(1)对象初始化Init事件:页面初始化的标志是Init事件。页面中的控件(包括页面本身)都是在它们最初的Form中被首次初始化的。在成功创建页面的控件树后,对应用程序激发这个事件。当Init事件发生时,在.aspx源文件中静态声明的所有控件都以实例化并取其默认值。应该注意到,这时还没有视图状态信息可供使用。虽然可以重载OnInit方法,但是系统并不保证这些控件实例是按照怎样的顺序被创建的。

  (2)加载视图:在初始化之后,页面框架立即加载该页面的视图状态(ViewState)。所谓视图状态就是一些名称/值对的集合,例如可以保存TextBox控件的ID和Text属性值。它一般被用于在一个往返行程中存留信息到服务器,即参与HTTP请求与响应。

  页面视图状态被存储在<input type=”hidden”>字段中,做为_VIEWSTAE的值进行记录。该视图状态通过ASP.NE自动维护。通过重写LoadViewState方法组件,开发人员可控制如何还原视图状态以及如何将其内容影射到内部状态。LoadViewState方法就是从ViewState中获取上一次的状态,并按照页面的控件树的结构,用递归来遍历整个树,将对应的状态恢复到每一个控件上。

  (3)处理回发数据:还原了视图状态,页面树中的各个控件的状态就与浏览器上次呈现该页面时这些控件所处的状态相同。下一步需要更新这些控件的状态以发送给客户端。

  回发数据处理阶段是各个控件有机会更新其状态,以便准确的反映相应的HTML元素在客户端的状态。例如,一个服务器TextBox控件对应的HTML元素是<input
type=text>,在回发数据阶段,TextBox控件将检索<input>标记的当前值并用它刷新其内部状态。每个控件负责从以发送的数据中提取相应值,并更新其某些属性。TextBox控件将更新Text属性,而CheckBox控件将刷新其Checked属性。服务器控件和HTML元素之间的匹配关系由二者的ID确定。

  页框架将在每个提交数据的控件上实现IpostBackDataHandler接口,然后激发LoadPostData事件,通过页面解析发现实现了IpostBackDataHandle接口的控件,这样就能正确的回传数据更新控件状态。在识别控件时,ASP.NET通过匹配控件的唯一标示符来更新正确的控件,该标识符具有名称值集和中的名称值对。这也就是在所有特定的页中每个控件都需要一个唯一标识符的原因之一。其他的步骤都由框架来完成,例如确定每个标识符在环境中是否唯一以及控件的基本属性等。

LostPostData方法的原型如下:

Public virtual bool LoadPostData(string postDatakey, NameValueCollection
postCollection)

  PostDataKey是标识控件的关键字,可以理解为控件的ID,postCollection是包含回发数据的集合,可以理解为视图状态值。该方法返回一个bool值,如果是true,则表示控件状态因回发而更改;否则返回false。页框架会更跟踪所有返回true的控件并在这些控件上调用RaisePostDataChangeEvent事件。

  LoadPostData方法是由System..Web.WebControls.Control定义的,而添加的每一个服务器控件也是从System..Web.WebControls.Control继承的,所以对于数据的回发处理并不需要干预。

  (4)加载页面Load:在回发数据处理阶段结束时,页面中的所有控件都根据客户端上所输入的更改来更新的状态。此时,对页面激发OnLoad事件。对于这个事件,相信大多数朋友都会比较熟悉,用Visual
Studio.Net生成的页面中的Page_Load方法就是响应Load事件的方法,对于每一次请求,Load事件都会触发,Page_Load方法也就会执行。可以利用该方法执行一些页面初始化,例如准备好数据库的连接字符串。在事件引用中,为了提高性能,通常使用Page类的IsPostBack属性判断是不是数据回发。

  (5)回发更改通知RaisePostDataChanged:如(3)所述,在所有实现了IpostBackDataHandler接口的控件被正确的回传数据更新后,每个控件都有一个布尔值的标识,标识其自上一次提交后改控件的数据是被更改还是保持其值。然后ASP.NET通过搜索页来寻找任何显示控件数据被更改的标识并激发RaisePostDataChanged。RaisePostDataChanged事件直到Load事件发生后,所有控件被更新后才激发。这保证了在控件被回传数据更新前,其他控件的数据在RaisePostDataChanged事件中没有被手动更改过。虽然也可以在Page的基础上自己定义数据更改的事件,但通常这个事件由太大用处。

  (6)处理回发事件RaisePostBackEvent:当回传更新导致数据改变而引发服务器端事件后,引发回传的对象会在RaisePostBackEvent事件中被处理。这种引发回传的对象往往是一个按钮被单击或者其状态改变而引发回传的控件。例如Button触发乐Onclick事件、客户端修改了某个文本框的文本、同时将AutoPostBack设置为true、触发TextChanged事件等。

  很多代码都在这个事件中执行,因为这是控制事件驱动逻辑的理想位置。为了保证呈现到浏览器的数据的正确性,在一系列的回传事件后,RaisePostBackEvent事件最终被激发。基于一致性考虑,会传中改变的控件直到这个函数被执行后才被更新。在实际的ASP.NET开发工作中要做的工作就是在此事件发生前处理代码。

  (7) 预呈现PreRender:在处理回发事件后,页面就准备进行呈现。这一阶段的标志是PreRender事件。各个控件可利用这个很好的时机,以便执行任何需要在保存视图状态和呈现输出结果的前一刻完成得最后一些更新操作。最终请求的处理都会转变为发挥服务器的响应,预呈现这个阶段就是执行在最终呈现之前所做的状态的更改,因为在呈现一个控件之前,必须更具它的属性来产生HTML,比如Style属性。这是典型的例子,这预呈现之前,可以更改一个控件的Style,当执行预呈现时,就可以把Style保存下来,做为呈现阶段显示HTML的样式信息。

  (8)保存状态SaveViewState:下一个状态为SaveViewState,在这一状态中所有控件以及页面本身可以刷新自己的SaveState集合的内容。所得到的视图状态随后得以序列化、进行哈希运算、进行Base64编码并关联到VI-EMSTATE隐藏自端。

  (9)呈现视图Render:到这里,实际上页面对请求的处理基本就告一段落了,在Render事件中,也调用对象是它们呈现为HTML,然后也收集HTML发送给客户。客户接收到HTML标记后进行重组,最终显示给客户。当Render事件被重载时,开发者可以为浏览器创建定值的HTML,此时页面创建的任何HTML都还没有生效。Render方法用HtmlTextWriter对象做参数并由它产生HTML送给浏览器。这主要用于自定义控件的开发。

  (10)处置Disposed:执行销毁控件前的所有最终清理操作。在此阶段必须释放对昂贵资源的引用,如内存的退出、数据库的连接等。

  (11)卸载Unload:一个页面的最后生存标志就是Unload事件,该事件在页面对象被解除之前发生。在此事件中,可以调用Dispose方法尽可能释放占用的任何关键资源(例如,文件、图形对象以及数据库连接)。

时间: 2024-10-08 01:57:03

页面生面周期的相关文章

JSP页面的生命周期

JSP页面的生命周期:我们假设要访问的jsp页面是index.jsp.首先,用户发出请求index.jsp:服务器会判断是否是第一次请求:如果是的话,JSP引擎会把该JSP文件转换成为一个Servlet,生成字节码文件,并执行_jspInit():如果不是的话,JSP将会访问已生成的字节码文件,解析执行_jspServlet()方法. jspService()方法被调用来处理客户端的请求.对每一个请求,JSP引擎创建一个新的线程来处理该请求.如果有多个客户端同时请求该JSP文件,则JSP引擎会创

【Framework】深入研究Asp.net页面的生命周期

介绍 Asp.net是微软.Net战略的一个组成部分.它相对以前的Asp有了很大的发展,引入了许多的新机制.本文就Asp.net页面的生命周期向大家做一个初步的介绍,以期能起到指导大家更好.更灵活地操纵Asp.net的作用. 当一个获取网页的请求(可能是通过用户提交完成的,也可能是通过超链接完成的)被发送到Web服务器后,这个页面就会接着运行从创建到处理完成的一系列事件.在我们试图建立Asp.net页面的时候,这个执行周期是不必去考虑的,那样只会自讨苦吃.然而,如果被正确的操纵,一个页面的执行周

.Net页面的生命周期列表

Html象征文本.子控件的Html象征文本组成了终究发送给客户端浏览器的Html象征文本. PreInit2.0 ->初始化Theme运用MasterPag和控件Skin ->Init ->InitComplet2.0 ->IfPostBack创建子控件并加载控件/视图状况 ->PreLoad2.0 ->Load ->IfPostBack则触发服务器端事情 ->LoadComplet2.0 ->IfnotPostBack则创建子控件 ->PreR

ASP.NET的WEB页面的生命周期

ASP.NET的WEB页面的生命周期,从生成到销毁,也经历了不同的阶段和过程.对于ASP.NET页面生命周期中将执行一些列处理步骤.这些步骤包括初始化.实例化控件.还原和维护状态.运行时间处理程序代码及呈现.一般来说,也要经历如下各个阶段1.页请求:页请求发生在页面生命周期开始之前,用户请求页时,ASP.NET将确定是否需要分析和编译页2.开始:在开始阶段,将设置页属性,如Request和Response.在此阶段,页还将确定请求是回发请求还是新请求,并设置IsPostBack属性3.页初始化:

转载【小程序】: 微信小程序开发---应用与页面的生命周期

App App() App() 函数用来注册一个小程序.接受一个 object 参数,其指定小程序的生命周期函数等. object参数说明: 属性 类型 描述 触发时机 onLaunch Function 生命周期函数--监听小程序初始化 当小程序初始化完成时,会触发 onLaunch(全局只触发一次) onShow Function 生命周期函数--监听小程序显示 当小程序启动,或从后台进入前台显示,会触发 onShow onHide Function 生命周期函数--监听小程序隐藏 当小程序

使用Response.Write实现在页面的生命周期中前后台的交互

Response.Write()方法非常的常见,也很普通,就是向http output中输出一string.其输出的内容位于页面的最顶端,常用来实现显示一些页面消息框等逻辑. 一般来说,在页面的整个生命周期过程中通过Response.Write输出的内容都会在最后随页面的文档流输出到Client端.但借助于Response.Flush,便可实现过程中前后台的动态交互. Response.Flush方法,强制将缓冲区中的内容输出到Client端,而无需等到生命周期的结束.通过一个例子加深理解,该实

(转)教你记住ASP.NET WebForm页面的生命周期

对于ASP.NET Webform的开发者,理解ASP.NET Webform的页面生命周期是非常重要的.主要是为了搞明白在哪里放置特定的方法和在何时设置各种页面属性.但是记忆和理解页面生命周期里提供的事件处理方法(method)非常困难,即使一时记住了但是过一段时间不看可能又忘了.网上有很多关于页面生命周期内部机制的文章,所以本文只准备简单覆盖技术的基础部分,更主要的目的是给大家提供一个简单得记忆页面生命周期的方法.准确的记忆ASP.NET页面生命周期每一个阶段发生了什么事情是比较困难的,一种

ASP.NET一个页面的生命周期

在学习ASP.NET页面生命周期前,需要先了解之前的ASP.NET的基本运行机制,在理解ASP.NET基本运行机制原理后,下面将介绍ASP.NET的生命周期中,页面从创建到处理结束的过程中ASP.NET Engine执行的10个事件. 1.对象初始化 页面自身以及页面中的控件,都是在Form中被首次初始化的,初始化事件可以通过OnInit()方法重载.通过在ASPX页面的后台代码文件的构造器中声明对象,页面将知道对象的类型,并知道需要创建多少个这样的对象.一旦在构造器中声明了控件,就可以在其任何

「小程序JAVA实战」 小程序默认加载的页面和生命周期(八)

转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-08/ 小程序如何加载的呢?生命周期!源码:https://github.com/limingios/wxProgram.git 中的No.3 加载页面 小程序默认加载的pages中的第一个目录 不管你的名称,只管你的顺序 其他目录需要通过触发才能加载 生命周期 相关的框架的时候都有生命周期的概念,通过了解生命周期更好的把控框架的使用! onLaunch 第一次打开小程序的初始化,也被调用一次.