ASP.NET 动态更改母版页

发布于 2024-08-15 21:30:09 字数 50 浏览 4 评论 0原文

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

如果不是为什么?

Is it possible to change the master-page of a content-page with the click of a button on that content-page?

If not why?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

请爱~陌生人 2024-08-22 21:30:09

有可能,您必须像这样重写代码隐藏类的 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"; }
}

It is possible, you'll have to override the OnPreInit method of your codebehind class like so...

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

So to bind this to a click, you could use a query string parameter, i.e.

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

And then in the codebehind

protected override void OnPreInit(EventArgs e)
{
    if(Request["masterPage"] == "alternative")
    { Page.MasterPageFile = "~/your/alternative/masterpage.master"; }
}
清浅ˋ旧时光 2024-08-22 21:30:09

您可以通过编程方式设置母版页,但是只能在预初始化事件中执行此操作。

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

You can set the master page programmatically, however you can only do it in the pre-init event.

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

骄兵必败 2024-08-22 21:30:09

您可以拥有一个常规的非服务器

,其中包含一个隐藏的 字段。当表单发布时,您检查 Pre_Init 事件中的 值,并在那里更改母版页。

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

You can have a regular, non-server <form>, with a hidden <input> field. When the form posts, you check for the <input> value in the Pre_Init event, and change the Master Page there.

You can't use a server-side form with a regular button event, because they fire too late in the page life cycle.

花期渐远 2024-08-22 21:30:09

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

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

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

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

I did this recently where I changed an image on the masterpage based on the page that was being rendered.

1) I referenced the control (imgPageSpecificTextImg on the Masterpage)

2) Changed the URL that the code was pointing to.

            System.Web.UI.WebControls.Image imgText = (System.Web.UI.WebControls.Image)Master.FindControl("imgPageSpecificTextImg");
            imgText.ImageUrl = "images/banner.jpg";
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文