为什么子控件中的某些事件在ASP.Net页面循环中以相反的顺序触发?

时间:2009-06-02 07:23:40

标签: asp.net events page-lifecycle

来自ASP.Net Page Lifecycle article on MSDN

  

虽然Init和Load都在每个控件上递归出现,但它们的顺序相反。每个子控件的Init事件(以及Unload事件)发生在为其容器引发相应的事件之前(自下而上)。但是,容器的Load事件发生在其子控件的Load事件之前(自上而下)。

这对unload事件很有意义,但为什么init呢?其他事件怎么样?

亲切的问候,

1 个答案:

答案 0 :(得分:5)

这是由于这些页面的创建方式 - 用户控件是页面类的属性。它们在初始化时被创建(并因此初始化),这确保了它们的实例在构造函数和页面的init事件期间可用。

然后,当加载,预渲染和渲染事件发生时,页面的事件首先触发,并将事件级联到其中的所有内容。

当卸载和处置时,属性对象首先再次处理。

WebForm页面事件模型有点过于复杂,恕我直言。