好记性不如烂笔头。

母版页和内容页加载时事件的执行顺序



     加载母版页和内容页共需要经过8个过程。这8个过程显示初始化和加载母版页及内容页是一个相互交叠的过程。基本过程是,初始化母版页和内容页控件树,然后,初始化母版页和内容页页面,接着,加载母版页和内容页,最后,加载母版页和内容页控件树。以上8个过程对应着11个具体事件。这些事件如下所示。

   (1)母版页中控件Init事件;

   (2)内容页中Content控件Init事件;

   (3)母版页Init事件;

   (4)内容页Init事件;

   (5)内容页Load事件;

   (6)母版页Load事件;

   (7)内容页中Content控件Load事件;

   (8)内容页PreRender事件;

   (9)母版页PreRender事件;

   (10)母版页控件PreRender事件。

   (11)内容页中Content控件PreRender事件。

     实际上,8个过程或者是11个事件都用于说明母版页和内容页中的具体事件顺序。内容页和母版页中会引发相同的事件。例如,两者都引发Init、Load和PreRender事件。引发事件的一般规律是,初始化Init事件从最里面的控件(母版页)向最外面的控件(Conetent控件及内容页)引发,所有其他事件则从最外面的控件向最里面的控件引发。需要牢记,母版页会合并到内容页中,并被视为内容页中的一个控件,这一点十分有用。

     在创建应用程序中,必须注意以上事件顺序。例如,当在内容页中访问母版页的属性或者服务器控件时,如果按照过去的处理思路,可能会在内容页的Page_Load事件处理程序中加以实现。由前文可知,在母版页Load事件引发之前,内容页Load事件已经引发,那么过去的思路显然是不正确的。如何才能在内容页中访问母版页包含对象呢?可参考“5.5访问母版页控件和属性”一节中介绍的实现方法。