ASP.NET动态更改母版页

时间:2009-12-24 13:33:46

标签: c# asp.net master-pages

是否可以通过点击该内容页面上的按钮来更改内容页面的母版页?

如果不是为什么?

4 个答案:

答案 0 :(得分:13)

有可能,您必须覆盖代码隐藏类的OnPreInit方法,如此...

protected override void OnPreInit(EventArgs e)
{
    Page.MasterPageFile = "~/your/masterpage.master";
}

因此,要将其绑定到单击,您可以使用查询字符串参数,即

<a href="<%=Request.Url.ToString()%>?masterPage=alternative">Use
alternative master page</a>

然后在代码隐藏

protected override void OnPreInit(EventArgs e)
{
    if(Request["masterPage"] == "alternative")
    { Page.MasterPageFile = "~/your/alternative/masterpage.master"; }
}

答案 1 :(得分:2)

您可以通过编程方式设置母版页,但只能在pre-init事件中进行。

http://odetocode.com/articles/450.aspx

答案 2 :(得分:2)

您可以拥有一个包含隐藏<form>字段的常规非服务器<input>。当表单发布时,您检查<input>事件中的Pre_Init值,然后更改母版页。

您不能将服务器端表单与常规按钮事件一起使用,因为它们在页面生命周期中触发太晚。

答案 3 :(得分:1)

我最近这样做了,我根据正在呈现的页面更改了母版页上的图像。

1)我引用了控件(母版页上的imgPageSpecificTextImg)

2)更改了代码指向的URL。

            System.Web.UI.WebControls.Image imgText = (System.Web.UI.WebControls.Image)Master.FindControl("imgPageSpecificTextImg");
            imgText.ImageUrl = "images/banner.jpg";