【问题标题】:Where in the page life cycle is the master page's load event (not OnLoad nor Page_Load)?主页的加载事件(不是 OnLoad 或 Page_Load)在页面生命周期中的哪个位置?
【发布时间】:2015-04-21 20:06:20
【问题描述】:

我对页面生命周期的理解如下:

  1. 页面Page_PreInit

  2. MasterPage Page_Init

  3. Page Page_Init

  4. Page Page_InitComplete

  5. 页面Page_PreLoad

  6. Page Page_Load

  7. MasterPage Page_Load

  8. Page_LoadComplete

  9. Page_PreRender

  10. MasterPage Page_PreRender

  11. Page Page_PreRenderComplete

  12. Page Page_SaveStateComplete

  13. MasterPage Page_Unload

  14. 页面Page_Unload

鉴于上述情况,MasterPage 的 Load 事件在哪里触发? Google 并没有提供帮助,因为很多人在谈论 OnLoad 事件时都会说 Load。

【问题讨论】:

  • 这能回答你的问题吗? stackoverflow.com/a/10505409/284240
  • @TimSchmelter 它在链接文章中谈论 Init 和 Load 的方式使它看起来像是在谈论 OnInit 和 OnLoad 事件。这不会是唯一一个 MSDN 页面说一个,而是另一个意思。
  • 不,是InitLoad事件,看图就可以看出区别了。

标签: asp.net webforms page-lifecycle


【解决方案1】:

母版页加载事件介于内容页加载事件和母版页控件加载事件之间。

查看MSDN了解详情

虽然 Init 和 Load 都在每个控件上递归发生,但它们 以相反的顺序发生。 Init 事件(以及 Unload 事件) 每个子控件在相应事件引发之前发生 为其容器(自下而上)。但是容器的 Load 事件 发生在其子控件的 Load 事件之前(自上而下)。 母版页的行为类似于页面上的子控件:母版页 Init 事件发生在页面 Init 和 Load 事件之前,而主 页面加载事件发生在页面初始化和加载事件之后。

MSDN

【讨论】:

  • 所以它是否调用 Masterpage(MP) 的 OnLoad,它调用附加到 MP 的 Load EventHandler 的每个事件,其中包括 Page_Load 函数,所有这些都发生在我给出的列表中的第 7 点?因此,将新事件附加到 MP 的 Load 将位于 OnLoad 之后和 Page_Load 之后的位置 7(根据 EventHandlers 的当前实现)?
【解决方案2】:

以下是母版页与内容页合并时事件发生的顺序:

  1. 内容页 PreInit 事件。
  2. 母版页控制 Init 事件。
  3. 内容控件初始化事件。
  4. 母版页初始化事件。
  5. 内容页初始化事件。
  6. 内容页面加载事件。
  7. 母版页加载事件。
  8. 母版页控制加载事件。
  9. 内容页面控制加载事件。
  10. 内容页 PreRender 事件。
  11. 母版页 PreRender 事件。
  12. 母版页控制 PreRender 事件。
  13. 内容页面控制 PreRender 事件。
  14. 母版页控制 Unload 事件。
  15. 内容页面控制 Unload 事件。
  16. 母版页卸载事件。
  17. 内容页卸载事件。

来源:https://msdn.microsoft.com/en-us/library/dct97kc3%28v=vs.140%29.aspx?f=255&MSPPError=-2147217396

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-10
    • 2015-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多