Я хочу иметь возможность установить тему ASP.NET на странице шлюза, которая будет определять тему на основе идентификатора партнера или чего-то в этом роде. Я полагаю, что просто вставлю название темы в сессию и получу ее оттуда, если она мне понадобится.
У меня проблемы с поиском подходящего места для размещения этого кода в одном месте.
Кажется, я не вижу глобального места, где вы можете установить тему. Вы должны установить его для каждой страницы.
Как описано в MSDN , вы можете назначить свойство Theme в функции PreInit для страницы.
Protected void Page_PreInit(object sender, EventArgs e)
{
switch (Request.QueryString["theme"])
{
case "Blue":
Page.Theme = "BlueTheme";
break;
case "Pink":
Page.Theme = "PinkTheme";
break;
}
}
Так что я подумал - я просто сделаю это на своей главной странице. К сожалению, копирование точно такого же кода в главную страницу не работает. Поэтому я подумал - хм, может быть, мастер-страницы не используют это событие. Оказывается, это правда.
Я ДЕЙСТВИТЕЛЬНО не хочу помещать этот код темы на каждую страницу контента. Это кажется совершенно глупым. Но я пока не могу найти другого пути. MSDN описывает только два способа применения темы к странице - в web.config или в Page.Theme.
Должен ли я создать подкласс страницы, и чтобы все мои страницы были подклассами этой страницы и переопределить PreInit в этом подклассе? Я думаю, что, должно быть, чего-то не хватает, потому что не могу себе представить, что MS действительно ожидает, что люди будут устанавливать Тему программно на каждой странице контента.