博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.net 服务器空间生命周期
阅读量:5010 次
发布时间:2019-06-12

本文共 2105 字,大约阅读时间需要 7 分钟。

在生命周期中将执行一系列处理步骤,这些步骤包括:  
1.实例化(Instantiate)  
  控件被页面或另一个控件通过调用它的构造器所实例化。这个步骤之后所列出的阶段,仅当控件加入控件树中才会发生。  
2.初始化(Initialize)  
  初始化在传入   Web   请求生命周期内所需的设置。在此阶段,控件树中的页面和全部控件通过默认方式来调用OnInit方法。开发人员可以通过重载OnInit方法,为控件提供初始化逻辑。在其生命周期的这个时候,控件能够安全地访问其置于Controls集合中的子控件,但是它不能访问控件层次中的父控件或其他层次更高的控件(如页面)   
   
3.开始跟踪视图状态(Begin   Tracking   View   State)  
  这个阶段发生在初始化阶段的末尾。在此阶段页面自动调用TrackViewState方法。TrackViewState方法保证在此阶段之后,使用ViewState字典属性而产生的变化保存在控件视图状态中。在大多数情况下,Control基类提供的TrackViewState方法实现已经足够了,只有在控件定义了复杂属性时,才必须重载TrackViewState方法。   
   
4.加载视图状态(仅用于回传过程)(Load   View   State   (postback   only))  
  这个阶段发生在回传时,而不是初始请求过程中,在此阶段结束时,就会自动填充控件的   ViewState   属性控件可以重写   LoadViewState   方法的默认实现,以自定义状态还原。   
   
5.加载回传数据(仅用于回传过程,为可选项)(Load   Postback   Data(postback   only,   optional))  
  只有在控件通过实现IPostBackDataHandler接口参与了回传数据处理时,这个阶段才发生在回传中。TextBox控件就是一个例子。在这个阶段中,控件必须从已发送的表单数据中,通过实现IPostBackDataHandler借口的LoadPostData方法更新其状态。   
   
6.加载(Load)  
  直到此阶段开始,控件树中的所有控件都已被初始化,并恢复到它们在先前周期最后的状态。OnLoad方法会执行所有请求共有的操作,如设置数据库查询。此时,树中的服务器控件已创建并初始化、状态已还原并且窗体控件反映了客户端的数据。如果需要实现仅在页面初始请求中执行的逻辑,那么实现该逻辑时,应该检查页面的IsPostBack属性   
   
7.引发修改事件(仅用于回传过程,为可选项)(Raise   Changed   Events(postback   only,   optional))  
  只有在控件通过实现IPostBackDataHandler接口参与了回传数据处理时,这个阶段才发生在回传中。在此阶段中,控件通过引发事件(如TextBox的TextChanged事件)作为一种信号-----其状态由于回传而改变(引发更改事件以响应当前和以前回发之间的状态更改)。为了参与此阶段,控件必须实现IPostBackDataHandler接口的RaisePostDataChangedEvent方法。   
   
8.引发回传事件(仅用于回传过程,为可选项)(Raise   Postback   Events(postback   only,   optional))  
  只有在控件通过实现IPostBackEventHandler接口参与了回传数据处理时,这个阶段才发生在回传中。在此阶段可以通过实现IPostBackEventHandler接口的RaisePostBackEvent方法来实现逻辑,以便把客户端事件映射到服务器端事件。   
   
9.预生成(PreRender)  
  在此阶段中,应该通过重载OnPreRender方法,执行在生成控件之前所需要的任何工作。在生成输出之前执行任何更新,可以保存在预生成阶段对控件状态所做的更改,而在生成阶段所对应的更改则会丢失。   
   
9.保存视图状态(Save   View   State)  
  如果控件不维持状态,或者它为保存其所有状态信息而使用ViewState字典,那么不必在此阶段期间实现任何附加逻辑。在此阶段期间,页面框架会自动保存ViewState字典。如果需要自定义状态管理,必须通过重载SaveViewState方法来实现自定义状态恢复,这种方法只被EnableViewState属性为true的控件所调用。在此阶段以后任何控件的改变都不会保存在控件的视图状态中。   
   
10.生成(Render)  
  通过这种方法,控件在输出流上通过重载Control的Render方法或WebControl类的rendering方法中的一种,来写标记文本。   
   
11.卸载(Unload)  
  在此阶段中,页面通过实现Page_Unload方法,来执行清除工作。作为控件开发者,应该重载Dispose方法来执行清除。   
   
12.释放(Dispose)  
  在此阶段,应该重载Dispose方法来释放控件所占的全部资源。  

转载于:https://www.cnblogs.com/Jeffer/archive/2009/12/29/1635090.html

你可能感兴趣的文章
hdu-4810 Wall Painting(组合数学)
查看>>
企业互联网服务介绍
查看>>
【推荐】iOS中书写代码规范34条小建议
查看>>
AJAX请求头Content-type
查看>>
3.html基础标签:表格
查看>>
python操作Redisl数据库
查看>>
NSArray & NSDictionary
查看>>
解决使用maven的java web项目导入后出现的有关问题 -cannot be read or is not a valid ZIP file...
查看>>
js yield
查看>>
HBase基本操作
查看>>
并发队列ConcurrentQueue
查看>>
HDU 4198 Quick out of the Harbour(BFS+最小优先队列)
查看>>
Ubuntu Server安装telnet服务时"Unable to locate package telnetd"解决方法
查看>>
掷骰子
查看>>
sqlmap详解
查看>>
2016年7月笔记
查看>>
开源手机自动化测试框架iQuery入门教程(三)
查看>>
利用php Jpgraph绘制柱形图
查看>>
[转载]C-Style Character Strings
查看>>
05.UIDynamic
查看>>