控件执行生命周期(From MSDN)

控件|执行

每次请求 ASP.NET 页时,服务器就会加载一个 ASP.NET 页,并在请求完成时卸载该页。页及其包含的服务器控件负责执行请求并将 HTML 呈现给客户端。虽然客户端和服务器之间的通信是无状态的和断续的,但是必须使客户感觉到这是一个连续执行的过程。

这种连续性假象是由 ASP.NET 页框架、页及其控件实现的。回发后,控件的行为必须看起来是从上次 Web 请求结束的地方开始的。虽然 ASP.NET 页框架可使执行状态管理相对容易一些,但是为了获得连续性效果,控件开发人员必须知道控件的执行顺序。控件开发人员需要了解:在控件生命周期的各个阶段,控件可使用哪些信息、保持哪些数据、控件呈现时处于哪种状态。例如,在填充页上的控件树之前控件不能调用其父级。

下表提供了控件生命周期中各阶段的高级概述。有关详细信息,请点击表中的链接。

阶段 控件需要执行的操作 要重写的方法或事件
初始化 初始化在传入 Web 请求生命周期内所需的设置。请参见处理继承的事件。 Init 事件(OnInit 方法)
加载视图状态 在此阶段结束时,就会自动填充控件的 ViewState 属性,详见维护控件中的状态中的介绍。控件可以重写 LoadViewState 方法的默认实现,以自定义状态还原。 LoadViewState 方法
处理回发数据 处理传入窗体数据,并相应地更新属性。请参见处理回发数据。
注意 只有处理回发数据的控件参与此阶段。 LoadPostData 方法
(如果已实现 IPostBackDataHandler)

加载 执行所有请求共有的操作,如设置数据库查询。此时,树中的服务器控件已创建并初始化、状态已还原并且窗体控件反映了客户端的数据。请参见处理继承的事件。 Load 事件
(OnLoad 方法)

发送回发更改通知 引发更改事件以响应当前和以前回发之间的状态更改。请参见处理回发数据。
注意 只有引发回发更改事件的控件参与此阶段。 RaisePostDataChangedEvent 方法
(如果已实现 IPostBackDataHandler)

处理回发事件 处理引起回发的客户端事件,并在服务器上引发相应的事件。请参见捕获回发事件。
注意 只有处理回发事件的控件参与此阶段。 RaisePostBackEvent 方法
(如果已实现 IPostBackEventHandler)

预呈现 在呈现输出之前执行任何更新。可以保存在预呈现阶段对控件状态所做的更改,而在呈现阶段所对的更改则会丢失。请参见处理继承的事件。 PreRender 事件
(OnPreRender 方法)

保存状态 在此阶段后,自动将控件的 ViewState 属性保持到字符串对象中。此字符串对象被发送到客户端并作为隐藏变量发送回来。为了提高效率,控件可以重写 SaveViewState 方法以修改 ViewState 属性。请参见维护控件中的状态。 SaveViewState 方法
呈现 生成呈现给客户端的输出。请参见呈现 ASP.NET 服务器控件。 Render 方法
处置 执行销毁控件前的所有最终清理操作。在此阶段必须释放对昂贵资源的引用,如数据库链接。请参见 ASP.NET 服务器控件中的方法。 Dispose 方法
卸载 执行销毁控件前的所有最终清理操作。控件作者通常在 Dispose 中执行清除,而不处理此事件。 UnLoad 事件(On UnLoad 方法)

注意 要重写 EventName 事件,请重写 OnEventName 方法(并调用 base.OnEventName)。
第三列中的方法和事件是从 System.Web.UI.Control 继承的,但以下几个除外:LoadPostData 和 RaisePostDataChangedEvent 是 IPostBackDataHandler 接口的方法,而 RaisePostBackEvent 属于 IPostBackEventHandler 接口。如果控件参与回发数据处理,则必须实现 IPostBackDataHandler。如果控件收到回发事件,则必须实现 IPostBackEventHandler。

表中没有列出 CreateChildControls 方法,这是由于每当 ASP.NET 页框架需要创建控件树时就会调用该方法,且该方法调用并不限于控件生命周期的特定阶段。例如,可以在加载页时、在绑定数据过程中或者在呈现过程中调用 CreateChildControls。

时间: 2024-11-17 11:11:21

控件执行生命周期(From MSDN)的相关文章

JS控件的生命周期介绍_javascript技巧

JS控件的生命周期跟其他平台UI的生命周期类似,但是又有自己的特点,我们只有将控件的生命周期划分清晰,所有的控件编写.mixins的编写和plugin的编写才能遵循控件的生命周期做统一的管理.在这里我把JS的生命周期定义为4部分: 1.initializer: 初始化,做一些不牵扯DOM操作的初始化操作 2.createDom: 创建 DOM,在这个过程中我们创建控件需要的DOM结构 3.renderUI: 生成控件的内部元素,在这里调用子控件的渲染方法,开启子控件的生命周期 4.bindUI:

为何EditItemTemplate里面的控件执行不了jquery代码

问题描述 jQuery(function($){$("#btnUpdate").click(function(){....});});///////这段代码没执行...代码...<EditItemTemplate><asp:Buttonid="btn1"runat="server"CommandName="Update"Text="OK"></asp:Button><

ASP.NET控件的执行生命周期

阶段 控件需要执行的操作 要重写的方法或事件 初始化 初始化在传入 Web 请求生命周期内所需的设置. Init 事件(OnInit 方法) 加载视图状态 在此阶段结束时,就会自动填充控件的 ViewState 属性,控件可以重写LoadViewState 方法的默认实现,以自定义状态还原. LoadViewState 方法 处理回发数据 处理传入窗体数据,并相应地更新属性. 注意:只有处理回发数据的控件参与此阶段. LoadPostData 方法(如果已实现IPostBackDataHandl

前一个textbox控件执行完程序跳到下一个后,如何跳转到下一个程序

问题描述 textBox9执行完后,不用焦点,如何让textBox10执行呢privatevoidtextBox8_TextChanged(objectsender,EventArgse){if(textBox8.Text.Length<=2){}else{textBox9.Focus();}}privatevoidtextBox9_TextChanged(objectsender,EventArgse){if(textBox9.Text.Length<=2){}else{textBox10_

关于控件的生命过程

先不多说,看一段代码: Default.aspx 1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 2 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "

分析ASP.NET服务器控件开发-控件生命周期

服务器控件生命周期简介 服务器控件的生命周期是创建服务器控件最重要的概念.作为开发人员,必须对服务器控件生命周期深刻理解.当然,这不是一朝一夕就可以做到的.对于学习控件开发技术的初学者,可以不必掌握得非常详细深入,只需对服务器控件的生命周期中的不同阶段有一个大致的了解即可. 在掌握服务器控件生命周期的过程中,读者要特别注意有关服务器控件状态的相关内容.在重点了解生命周期各个阶段的同时,对服务器控件的状态变化要注意以下问题:控件的生命周期何时保存控件和恢复其状态:何时与页面及其他控件之间进行交互:

ASP.NET控件生命周期

ASP.NET控件的生命周期一共经历11个过程,我们可以重写它们各自的方法.如下,按次序:1)OnInit (初始化)     方法原型:     protected override void OnInit(EventArgs e)     2)LoadViewState (装载视图)      方法原型:      protected override void LoadViewState(object savedState) 3)LoadPostData (回传数据处理)      - 控

IIS处理Asp.net请求和Asp.net页面生命周期详细说明_实用技巧

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

一起谈.NET技术,asp.net控件开发基础(13)

1.减轻服务器压力,增加用户体验 服务器功能是强大的,客户端脚本一点也不弱,现在的ajax技术和Atlas技术就是最好的证明,我们总是期待UI有一个好的效果,flash动画给我们带来了很酷的效果,我们至少也可以为我们的服务器控件添加客户端脚本,一方面减少了服务器端的回传,一方面又能为控件提供非常酷的效果.我想我们都很喜欢ATLAS里面很多很酷的控件吧,而且无刷新,服务器控件与客户端脚本交互使用,那会服务器控件变的更加完美. 经过上面的废话,下面我们进入正题 2.简单为服务器控件添加客户端脚本 我