Welcome 微信登录

首页 / 网页编程 / ASP.NET / ASP.net控件开发系列之二

ASP.net控件开发系列之二2011-01-27Lyn“生死有序”

“装装孙子”

上篇文章《开篇》说了不少空洞的理论,这篇文章我还是先说说“大而化之”的东西:1、ASP.net控件(包括页面本身)的生命期的细节;2、如何开始一个控件的编写。

“生死有序”

ASP.net处理程序在接收到一个用户的页面请求后,它是如何变戏法把一个鲜活的页面呈现给客户端的呢?它都做了哪些事?按什么顺序做的?

要说明这个问题,我们首先要明白,一个页面它本身也是一个Control。从设计模式的角度讲,页面模型是一个“合成模式(Composite)”,它本身是一棵由多层控件组成的结构树,顶层是Page,以下有叶有树枝,叶是不再包涵子控件的控件,枝是又包涵子控件的控件,每一层控件的生成都会调用一个生成子控件的方法,父控件调用子控件的生成方法,子又调用孙的,如此递归,保证页面中所有有效的(一般情况下是Visible=true)控件都得到生成过程处理,(有关设计模式的东西大家可以查看吕震宇老师在博客园的设计模式系列文章,该系列文章是对阎博士《Java与模式》一书(88元,很厚)的提炼与加工,至少可用来做设计模式浅层面速成的教材),而每个控件在生命周期大体都包括以下几个步骤:

1.实例化(Instantiate)

我们写控件一般不要接触此活动。

2.初始化(Initialize)

同上。

3.跟踪视图(Tracking View State)*

这个比较重要,涉及到视图状态,一般情况下不必重载此方法。

4.加载视图状态(Load view state)*

只会在回传过程中调用此方法,用法同上。

5.加载回传数据(Load postback data)*

如果你的控件生成之后要和客户端交互,那么这个方法就很重要,只会在回传过程中调用此方法。