控件第一次加载呈现过程,如图中所示,在页面第一次显示时,会在预呈现阶段调用CreateChildControls:
特别是,请求处理代码(在 Page 类中)在将 PreRender 事件引发至页面和每个子控件之前会直接调用 EnsureChildControls。换言之,如果控件树还未完全生成,则不会呈现任何控件。
以下代码段例示了 EnsureChildControls(在 Control 基础上定义的另一种方法)的伪代码。
此方法可能会在页面和控件的生命周期内反复调用。为避免控件重复,ChildControlsCreated 属性被设为 true。如果此属性返回 true,则该方法会立即退出。
当页面回发时,ChildControlsCreated 会在周期前期调用。如图所示,它在已发布数据处理阶段调用。
注意第一次加载控件时是在预输出(PreRender)后调用CreateChildControls而回传的时候是在预加载(PreLoad)后调用CreateChildControls的。
原文地址:http://www.microsoft.com/china/msdn/library/webservices/asp.net/ASPNETContDev.mspx?mfr=true