ASP.NET组件设计Step by Step(5)

王朝asp·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

控件生存周期

当一个asp.net页面被请求后,一个page实例被生成,开始自己的逻辑,最终返回HTML流给用户端。构成逻辑处理的是page中存在的服务器端控件以及控件间的交互,并且在页面结束前服务器控件们被销毁(视.net的回收策略而定)。那么这些控件在短短的页面处理过程中经历了创建、处理、销毁等到底是如何组织的?这些控件是如何同其他控件交互,如何在多个页面间保持状态的?(这应当是整个控件开发的基本也是重要的知识)

首先,我们看看特殊的控件,也就是Page类,所有aspx页面的父类(或者祖先)。因为这是我们程序员主要的舞台。Page类继承自TemplateControl, 且实现了IhttpHandler。IhttpHandler接口是保证页面被asp.net框架所调度,并且可以获得HTTP协议的数据输入流以及获得向HTTP输出流输出数据的能力;而TemplateControl类是继承自Control类。Page实现了InamingContainer接口,这保证了他可以充当页面中的控件们的容器(控件们的战斗舞台)

好了,现在看看控件的生命周期(看看MS是如何定义这个框架体系的):

1、 Instance 实例化

通过控件的构造器所实例化。还可以通过被父控件实例化而生成。

2、 Initialize 初始化

控件会通过默认方式调用OnInit方法,从而引发On_init事件。Page根据aspx页面的语法以及标签设定值来初始化控件,对声明语法中的控件及其属性赋值。作为一个特殊控件,一般可以在Page的OnInit事件中允许编程者提供控间的初始化操作(对某些属性赋值)。对于控件包含的子控件,控件可以访问他们,但是子控件是不可以访问父控件的(因为控件此时还没有被加载(Load))。

3、 Begin Tracking View State 开始跟踪视图状态

发生在初始化阶段末尾,Page会调用控件的TrackViewState方法(这是一个继承自

[1] [2] [3] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航