自定义服务器控件中的事件

本文详细介绍了ASP.NET服务器控件的生命周期,包括初始化、加载、事件处理、验证、呈现和卸载六个阶段,以及在自定义控件开发中需要注意的事件。特别讨论了数据绑定控件和登录控件的事件,强调了动态添加控件和嵌套数据绑定控件的数据同步问题。
摘要由CSDN通过智能技术生成

  自定义服务器控件也有自己的生命周期,它与页面生命周期几乎经历着同样的生命同期过程,比如OnInit事件它发生在页面OnInit事件之前,控件的Load事件发生在页面Load事件之后,PreRender事件发生在页面PreRender事件之后

Render事件发生在页面Render事件之后,Unload事件发生在页面Unload事件之前,总之,它也分为6个阶段:

 1.初始化

 2.加载

 3.事件处理

 4.验证

 5.呈现

  6.卸载

 

A.初始化阶段的事件包括PreInit与Init事件,InitCompleted事件它们分别对应页面方法OnPreInit(),OnInit(),OnInitCompleted()方法.其中PreInit事件与InitCompleted事件是Page对象特有,其中页面的方法还有Construct()(构造函数),ProcessRequest()方法

InitializeCulture()方法(初始化文化信息)TrackViewState()(跟踪视图状态,使得架构能记录ViewState的状态更改,这个方法调用发生在Init事件与InitCompleted事件之间,PreInit事件一般用来设置主控页,Theme主题属性,设置IsPostBack,UICultrue属性,读取或设置配置文件属性值.Init事件发生在所有控件已初始化且已应用所有外观设置后引后。使用此事件来初始化控件属性

B.页面为自身和控件加载视图状态(如果页面上设置了属性EnableViewState为false,则不加载视图状态,一般视图状态放在一个隐藏控件中传送)-》页面调用OnPreLoad()方法引发PreLoad事件-》引发Load事件--》递归调用页面中的子控件的OnLoad()方法,引发LOad事件,Page类的OnLoad()方法会自动的调用,但如果你重写了OnLoad()方法则要显示的调用它base.OnLoad(e);

C.事件处理(RaisePostBackEvent)这个是引起回发事件,能够处理回发的控件必须实现System.web.UI.IPostbackDataHandler接口,此接口允许控件确定是否在回发改变后其状态以及引发相应的事件,它有两个方法public bool LoadPostData(String postDataKey,NameValueCollection collection);public void RaisePostChangedEvent();如果LoadPostData方法返回True,则页面框架在跟踪此控件时发现返回True ,则调用RaisePostChangedEvent()方法,该方法引发更改事件TextChanged事件,TextChanged事件在页面中可能订阅事件处理程序(OnTextChanged="Text_Changed")从而引发事件.

D.验证(Validate)验证发生在装载与页面事件之后,因此在此之前如果要验证数据有效性,必须用到IsValidate属性

E.呈现页面中的OnLoadComplete()方法引发LoadCompleted事件,OnPreRender方法引发preRender事件-->控件DataBind()方法-->调用OnDataBind()方法-->引发数据绑定事件-->OnPreRenderCompleted()引发PreRenderComplete事件-->SaveViewState()保存视图状态与控件状态-->OnSaveStateComplete()方法引发SaveStateComplete事件-->RendControl()-->Render()-->RenderChildren()

F.卸载OnUnload()引发unload事件-->dispose()

 

 

ASP.NET 页生命周期概述

ASP.NET 页运行时,此页将经历一个生命周期,在生命周期中将执行一系列处理步骤。这些步骤包括初始化、实例化控件、还原和维护状态、运行事件处理程序代码以及进行呈现。了解页生命周期非常重要,因为这样做您就能在生命周期的合适阶段编写代码,以达到预期效果。

如果您要开发自定义控件,就必须熟悉页生命周期,以便正确进行控件初始化,使用视图状态数据填充控件属性以及运行控件行为代码。控件的生命周期基于页的生命周期,但是页引发许多您需要在自定义控件中处理的事件。

本主题包含以下各节:

常规页生命周期阶段

一般来说,页要经历下表概述的各个阶段。除了页生命周期阶段以外,在请求前后还存在应用程序阶段,但是这些阶段并不特定于页。有关更多信息,请参见 Introduction to the ASP.NET Application Life Cycle and IIS 7.0 的 ASP.NET 应用程序生命周期概述(ASP.NET 应用程序生命周期简介)。

生命周期的某些部分仅当页处理为回发时才出现。对于回发,部分页回发过程中(当您使用 UpdatePanel 控件)与整页回发过程中的页生命周期是一样。

阶段

说明

页请求

页请求发生在页生命周期开始之前。用户请求页时,ASP.NET 将确定是否需要分析和编译页(从而开始页的生命周期),或者是否可以在不运行页的情况下发送页的缓存版本以进行响应。

启动

在启动阶段,将设置页属性,如 RequestResponse在此阶段,页还将确定请求是回发请求还是新请求,并设置 IsPostBack 属性。页还设置 UICulture 属性。

初始化

页初始化期间,可以使用页中的控件,并将设置每个控件的 UniqueID 属性。如果需要,还会向页应用于母版页和主题。如果当前请求是回发请求,则回发数据尚未加载,并且控件属性值尚未还原为视图状态中的值。

加载

加载期间,如果当前请求是回发请求,则将使用从视图状态和控件状态恢复的信息加载控件属性。

回发事件处理

如果请求是回发请求,则将调用控件事件处理程序。之后,将调用所有验证程序控件的 Validate 方法,此方法将设置各个验证程序控件和页的 IsValid 属性。

呈现

在呈现之前,会针对该页和所有控件保存视图状态。在呈现阶段中,页会针对每个控件调用 Render 方法,它会提供一个文本编写器,用于将控件的输出写入页的 Response 属性的 OutputStream 对象中。

卸载

完全呈现页并已将页发送至客户端、准备丢弃该页后,将引发 Unload 事件。此时,将卸载页属性(如 ResponseRequest)并执行清理。

生命周期事件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值