好的,我们都知道在页面的OnPreInit事件中动态更改主页。
但是嵌套主页呢?我能改变主页的主页吗?
MasterPage类没有公开OnPreInit事件。
有什么想法吗?
好的,我们都知道在页面的OnPreInit事件中动态更改主页。
但是嵌套主页呢?我能改变主页的主页吗?
MasterPage类没有公开OnPreInit事件。
有什么想法吗?
刚刚测试了一下,从使用嵌套主页面的页面的PreInit可以正常工作。
protected void Page_PreInit(object sender, EventArgs e)
{
this.Master.MasterPageFile = "/Site2.Master";
}
万一有人在尝试Andy的代码时遇到“内容控件必须是内容页或引用主控件页的嵌套主控件页中的顶级控件”错误而感到困惑,请删除this.Master
。 因此,代码变为:
protected void Page_PreInit(object sender, EventArgs e)
{
MasterPageFile = "/Site2.Master";
}
编辑 如下方的Zhaph所指出的那样,我^^那里的代码只会改变当前页面的母版,而不是母版的母版。这就是Hainesy提到“我们都知道如何动态更改母版页”时所说的代码(我没有意识到)。如果你正好通过谷歌搜索“stackoverflow更改母版页”来到这个页面(这就是我所做的),那么可能这就是你在寻找的代码:-)
public class BasePage : System.Web.UI.Page
{
private void Page_PreInit(object sender, System.EventArgs e)
{
if (Request.Browser.IsMobileDevice)
{
if (Page.MasterPageFile == "~/master/nested.master"))
{
Page.Master.MasterPageFile = "~/master/mobile.master";
}
else
{
MasterPageFile = "~/master/mobile.master";
}
}
}
}