在加载或加载每个内容页面后触发哪个主页面事件?

时间:2013-02-15 12:37:48

标签: asp.net master-pages

在加载每个内容页面时,我想获取内容页面名称。所以我想知道每个内容页面加载会触发哪个Master Page事件?

2 个答案:

答案 0 :(得分:2)

这是一个可能有用的资源,它说明了ASP.NET页面的事件:

http://weblogs.asp.net/ricardoperes/archive/2009/03/08/asp-net-page-events-lifecycle.aspx

  1. Page.OnPreInit
  2. MasterPageControl.OnInit(对于母版页上的每个控件)
  3. Control.OnInit(对于页面上的每个控件)
  4. MasterPage.OnInit
  5. Page.OnInit
  6. Page.OnInitComplete
  7. Page.LoadPageStateFromPersistenceMedium
  8. Page.LoadViewState
  9. MasterPage.LoadViewState
  10. Page.OnPreLoad
  11. Page.OnLoad
  12. MasterPage.OnLoad
  13. MasterPageControl.OnLoad(对于母版页上的每个控件)
  14. Control.OnLoad(对于页面上的每个控件)
  15. OnXXX(控制事件)
  16. MasterPage.OnBubbleEvent
  17. Page.OnBubbleEvent
  18. Page.OnLoadComplete
  19. Page.OnPreRender
  20. MasterPage.OnPreRender
  21. MasterPageControl.OnPreRender(对于母版页上的每个控件)
  22. Control.OnPreRender(对于页面上的每个控件)
  23. Page.OnPreRenderComplete
  24. MasterPageControl.SaveControlState(对于主服务器上的每个控件  页)
  25. Control.SaveControlState(对于页面上的每个控件)
  26. Page.SaveViewState
  27. MasterPage.SaveViewState
  28. Page.SavePageStateToPersistenceMedium
  29. Page.OnSaveStateComplete
  30. MasterPageControl.OnUnload(对于母版页上的每个控件)
  31. Control.OnUnload(对于页面上的每个控件)
  32. MasterPage.OnUnload
  33. Page.OnUnload
  34. 此处还有the official documentation about ASP.NET page lifecycle,其中详细介绍了所有事件。希望这对你有帮助。

    EDIT;

    嗯,实际上上面看起来有点过头了。看起来你需要做的就是 - 在每个内容页面中,确保你引用ASPX文件中的母版页:

    <%@ MasterType virtualpath="~/Masters/Master1.master" %>

    然后在母版页中有一个公共方法,如:

    public void LogContentPageName(string name)
    {
        // Do whatever you want with the passed name.
    }
    

    然后在内容页面的Page_Load事件中,您可以执行以下操作:

    protected void Page_Load(object sender, Eventargs e)
    {
        Master.LogContentPageName("Whatever");
    }
    

答案 1 :(得分:0)

请尝试以下活动

  

protected override void OnInit(EventArgs e){          //在这里做你的东西}