代码之家  ›  专栏  ›  技术社区  ›  Shagglez

如何动态更改母版页的母版页?

  •  4
  • Shagglez  · 技术社区  · 15 年前

    我正在尝试动态地更改母版页,尽管从内容页(覆盖)很容易更改 OnPreInit ),母版页没有此类事件。有没有可能以某种方式介绍这一事件?

    我走了半路,经过了那条小路 PreInit 在梯子底部的页面中,你可以做 base.Master.MasterPageFile = "/master.Master"; ,但由于某些原因,这不会加载最顶层母版页(即样式表)标题中的内容。

    4 回复  |  直到 15 年前
        1
  •  3
  •   Community Mohan Dere    9 年前

    引用自: Can I change a nested master page's master dynamically?

    刚刚测试了这个,它从使用嵌套母版页的页面的PreInit开始工作。
    {
    此.Master.MasterPageFile=“/Site2.Master”;

    显然你需要确保 ContentPlaceHolderID在您要交换的页面之间是一致的。

        2
  •  1
  •   jcolebrand    15 年前

    如果你重写了MasterPageClass并添加了你自己的onPreInit,你也许可以这么做,但我认为即使这样也行不通。根据Reflector,它肯定没有构造,甚至没有什么可以重写的,尽管它继承了UserControl,但它总是只有一个init。。。或者,您可以尝试重写get\u Master(),但这也可能不起作用。。。

        3
  •  0
  •   regisbsb    14 年前

    使用母版页构造函数。

        4
  •  0
  •   Ali Smadi    9 年前

    假设您想使用不同的母版页而不使用菜单,请传递查询字符串NoMenu。

    protected void Page_PreInit(object sender, EventArgs e)
     {
       //You'll go through infinite loop if you do not check if we already have the new master page, this will switch to different master page if requested without a menu for example
       if (Request.QueryString["NoMenu"] != null && this.MasterPageFile != "/MasterPageNoMenu.master")
        {
            this.MasterPageFile = "/MasterPageNoMenu.master";
    
            base.OnPreInit(e); 
        }
    }