Я хочу иметь возможность установить тему 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 или с помощью PageTheme.
Придется ли мне создать подкласс Page, чтобы все мои страницы были подклассом этой страницы и переопределили PreInit в этом подклассе? Я думаю, что мне что-то не хватает, потому что я не могу представить, что MS действительно ожидает, что люди будут программно устанавливать тему на каждой странице с контентом.