ASP.NET页面生命周期

(1)PreInit 预初始化
(2)Init 初始化
(3)InitComplete 初始化完成
(4)PreLoad 预加载
(5)Load 加载
(6)LoadComplete 加载完成
(7)PreRender 预输出
(8)PreRenderComplete 预输出完成
(9)Unload 卸载

ASP.NET控件生命周期

-- 实例化(Instantiate)

控件被页面或另一个控件通过调用它的构造器所实例化。这个步骤之后所列出的阶段,仅当控件加入控件树中才会发生。

-- 初始化(Initialize)

初始化在传入 Web 请求生命周期内所需的设置。在此阶段,控件树中的页面和全部控件通过默认方式来调用OnInit方法。开发人员可以通过重载OnInit方法,为控件提供初始化逻辑。在其生命周期的这个时候,控件能够安全地访问其置于Controls集合中的子控件,但是它不能访问控件层次中的父控件或其他层次更高的控件(如页面)

-- 开始跟踪视图状态(Begin Tracking View State)

这个阶段发生在初始化阶段的末尾。在此阶段页面自动调用TrackViewState方法。TrackViewState方法保证在此阶段之后,使用ViewState字典属性而产生的变化保存在控件视图状态中。在大多数情况下,Control基类提供的TrackViewState方法实现已经足够了,只有在控件定义了复杂属性时,才必须重载TrackViewState方法。

-- 加载视图状态(仅用于回传过程)(Load View State (postback only))

这个阶段发生在回传时,而不是初始请求过程中,在此阶段结束时,就会自动填充控件的 ViewState 属性控件可以重写 LoadViewState 方法的默认实现,以自定义状态还原。

-- 加载回传数据(仅用于回传过程,为可选项)(Load Postback Data(postback only, optional))

只有在控件通过实现IPostBackDataHandler接口参与了回传数据处理时,这个阶段才发生在回传中。TextBox控件就是一个例子。在这个阶段中,控件必须从已发送的表单数据中,通过实现IPostBackDataHandler借口的LoadPostData方法更新其状态。

-- 加载(Load)

直到此阶段开始,控件树中的所有控件都已被初始化,并恢复到它们在先前周期最后的状态。OnLoad方法会执行所有请求共有的操作,如设置数据库查询。此时,树中的服务器控件已创建并初始化、状态已还原并且窗体控件反映了客户端的数据。如果需要实现仅在页面初始请求中执行的逻辑,那么实现该逻辑时,应该检查页面的IsPostBack属性

-- 引发修改事件(仅用于回传过程,为可选项)(Raise Changed Events(postback only, optional))

只有在控件通过实现IPostBackDataHandler接口参与了回传数据处理时,这个阶段才发生在回传中。在此阶段中,控件通过引发事件(如TextBox的TextChanged事件)作为一种信号-----其状态由于回传而改变(引发更改事件以响应当前和以前回发之间的状态更改)。为了参与此阶段,控件必须实现IPostBackDataHandler接口的RaisePostDataChangedEvent方法。

-- 引发回传事件(仅用于回传过程,为可选项)(Raise Postback Events(postback only, optional))

只有在控件通过实现IPostBackEventHandler接口参与了回传数据处理时,这个阶段才发生在回传中。在此阶段可以通过实现IPostBackEventHandler接口的RaisePostBackEvent方法来实现逻辑,以便把客户端事件映射到服务器端事件。

-- 预生成(PreRender)

在此阶段中,应该通过重载OnPreRender方法,执行在生成控件之前所需要的任何工作。在生成输出之前执行任何更新,可以保存在预生成阶段对控件状态所做的更改,而在生成阶段所对应的更改则会丢失。

-- 保存视图状态(Save View State)

如果控件不维持状态,或者它为保存其所有状态信息而使用ViewState字典,那么不必在此阶段期间实现任何附加逻辑。在此阶段期间,页面框架会自动保存ViewState字典。如果需要自定义状态管理,必须通过重载SaveViewState方法来实现自定义状态恢复,这种方法只被EnableViewState属性为true的控件所调用。在此阶段以后任何控件的改变都不会保存在控件的视图状态中。

-- 生成(Render)

通过这种方法,控件在输出流上通过重载Control的Render方法或WebControl类的rendering方法中的一种,来写标记文本。

-- 卸载(Unload)

在此阶段中,页面通过实现Page_Unload方法,来执行清除工作。作为控件开发者,应该重载Dispose方法来执行清除。

-- 释放(Dispose)

在此阶段,应该重载Dispose方法来释放控件所占的全部资源。

ASP.NET页面生命周期与控件生命周期的更多相关文章

  1. asp.net 页面上传文件控件后台代码Request.Files获取不到

    今天开发中遇到页面文件上传控件选择了文件,而后台Request.Files.Count取值为0,之前开发中遇到过几次,老是忘掉,今天记下来. html: <input type="fi ...

  2. Asp.net页面生命周期详解任我行(2)-WebForm页面生命周期WEBFORM_ASPNET控件树的生成和作用

    摘要 页面类是如何结合后台文件类生成整个页面的HTML的代码和后台输出的代码输出到浏览器中呢?这就牵扯到Asp.net页面生命周期中一个很重要的概念控件树.服务器以反射的方式创建了页面类对象 内容 我 ...

  3. WebForm页面生命周期WEBFORM_ASPNET控件树的生成和作用

    WebForm页面生命周期WEBFORM_ASPNET控件树的生成和作用 摘要 页面类是如何结合后台文件类生成整个页面的HTML的代码和后台输出的代码输出到浏览器中呢?这就牵扯到Asp.net页面生命 ...

  4. atitit.提升开发效率---使用server控件生命周期 asp.net 11个阶段 java jsf 的6个阶段比較

    atitit.提升开发效率---使用server控件生命周期  asp.net 11个阶段  java jsf 的6个阶段比較 例如以下列举了server控件生命周期所要经历的11个阶段. (1)初始 ...

  5. .net 控件生命周期

    这里列举出来了11个生命周期,一般的控件生命周期会经历这11个生命周期,但是有一些特别的控件比如页面控件System.Web.UI.Page等. 具体代码参考如下: /// <summary&g ...

  6. Visual Studio 2013新建ASP.NET项目使用Empty模板,在页面中使用验证控件出错的解决方案

    Visual Studio 2013新建ASP.NET项目使用Empty模板,在页面中使用验证控件,运行页面,会出现如下的错误: 错误原因 VisualStudio 2012(或2013) WebFo ...

  7. asp.net 分页-自己写分页控件

    去年就发表过asp.net 分页-利用后台直接生成html分页 ,那种方法只是单纯的实现了分页,基本不能使用,那时就想写个自己的分页控件,无奈能力有限.最近有点时间了,就自己做出了这个分页控件.我承认 ...

  8. Asp.Net 之 母版页中对控件ID的处理

    一.问题提出 由于总体排版和设计的需要,我们往往创建母版页来实现整个网站的统一性,最近我由于统一性的需要,把原来整个项目单独的页面全部套用了母版页.但是出现了一系列失效错误. 二. 抽象模型 由于整个 ...

  9. ASP.NET MVC 中使用用户控件——转

    讲讲怎么在 ASP.NET MVC2中使用用户控件.首先我们新建一个用户控件,   我们命名为SelectGroup.ascx,代码如下 <%@ Control Language="C ...

随机推荐

  1. 第一个php网页

    <?php date_default_timezone_set('PRC'); if($_POST[ok]) { //echo "记录"; //echo "here ...

  2. mongdb高级操作(group by )

    首先介绍哈方法 /** * 利用java驱动自带函数分组查询 * @param key 用来分组文档的字段 [group by key] * @param cond 执行过滤的条件 [where na ...

  3. 安卓问题http://blog.csdn.net/xb12369/article/details/50510302

  4. SSM框架整合基本操作

    1.首先导入各种需要的配置包,在这里个人的习惯就是先导入mybatis相关包,然后通过编程软件集成一个spring3.0或者spring3.1进来并选择里面相应的包,这样就不需要我们自己去导入相应的s ...

  5. 网络爬虫之Windows环境Heritrix3.0配置指南

    一.引言: 最近在忙某个商业银行的项目,需要引入外部互联网数据作为参考,作为技术选型阶段的工作,之前已经确定了中文分词工具,下一个话题就是网络爬虫的选择,目标很明确,需要下载一些财经网站的新闻信息,然 ...

  6. cocos2d-x 卡牌翻牌效果的实现

    转自:http://blog.csdn.net/yanghuiliu/article/details/9115833 这个能实现翻牌的action就是CCOrbitCamera. static CCO ...

  7. AptanaStudio3 安装在win7 64bit时遇到的问题

    最近在研究前端语言,想起可以使用AptanaStudio这个前端利器,没想到安装时却遇到波折.先从网上下载了Aptana版本 3.6.0 64bit问题1 安装进度缓慢,第一次安装时,显示downlo ...

  8. js 数组详解(javascript array)

    Array Array 对象用于在单个的变量中存储多个值. 构造函数: 1)   new Array(); 2)   new Array(size); 3)   new Array(element0, ...

  9. 微信中QQ表情的解析(php)

    微信公众平台接受的消息中,标签是用'/:'开头的字符串表示的,假设要在网页上显示(比方制作微信大屏幕),就须要进行转换. 所以我向微信公众平台按顺序发送了各个QQ表情,在微信公众平台后台能够看到接受的 ...

  10. 13 引用WINAPI

            [System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "SetWind ...