ASP.NET динамическое изменение главной страницы - PullRequest
6 голосов
/ 24 декабря 2009

Можно ли изменить главную страницу контентной страницы одним нажатием кнопки на этой контентной странице?

Если нет, то почему?

Ответы [ 4 ]

13 голосов
/ 24 декабря 2009

Возможно, вам придется переопределить метод OnPreInit вашего класса codebehind, например ...

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"; }
}
2 голосов
/ 24 декабря 2009

Вы можете иметь обычный, не серверный <form> со скрытым полем <input>. Когда форма публикуется, вы проверяете значение <input> в событии Pre_Init и меняете там главную страницу.

Нельзя использовать форму на стороне сервера с обычным событием кнопки, поскольку они запускаются слишком поздно в жизненном цикле страницы.

2 голосов
/ 24 декабря 2009

Вы можете установить главную страницу программно, однако это можно сделать только в событии pre-init.

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

1 голос
/ 06 августа 2014

Я сделал это недавно, когда я изменил изображение на главной странице на основе страницы, которая была отрисована.

1) Я ссылался на элемент управления (imgPageSpecificTextImg на главной странице)

2) Изменен URL-адрес, на который указывал код.

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