динамическое изменение главной страницы. С главной страницы?
У меня есть следующий фрагмент кода:
public abstract class BasePage : Page
{
protected void Page_PreInit(object sender, EventArgs e)
{
if (IsPostBack)
return;
var section = ConfigurationManager.GetSection("UrlRewriter/PlainRules");
if (section == null)
SetMaster("~/App_Shared/Master/BaseRegular.Master");
else
SetMaster("~/App_Shared/Master/BaseRewritable.Master");
}
protected void SetMaster(string value)
{
MasterPage master = Master;
while (master != null)
{
if (master is SharedMaster)
{
master.MasterPageFile = value;
break;
}
master = master.Master;
}
}
}
Он отлично работает при динамическом изменении моих главных страниц, но я хотел бы иметь возможность делать это непосредственно с SharedMaster
, а не с каждой отдельной страницы, которая у меня есть.
Page_PreInit никогда не срабатывает, если его поместить на главную страницу, так как я могу это сделать?
1 ответ:
Если вы помещаете эту функцию в
BasePage
и затем наследуете каждую свою страницу отBasePage
, то вам не нужно повторять код на каждой странице. Похоже, у вас уже есть идеальный рабочий код.Что касается размещения логики на главной странице, это будет невозможно - потому что, как только главная страница будет связана со страницей и будет загружено дерево управления, вы не сможете изменить главную страницу. Pre_init не срабатывает для главной страницы, потому что главная страница не загружается до этого момента и так далее. один раз можно изменить главную страницу, связанную со страницей. Затем загружается главная страница и создается составное дерево элементов управления, после чего вы получите события главной страницы.