В методе Page_PreInit, где вы назначаете темы, есть несколько способов справиться с этим. Я проверяю, существует ли каталог. Если это так, то это тема, которую я хочу. Если это не так, используйте тему по умолчанию, где я знаю, что каталог существует.
void Page_PreInit(object sender, EventArgs e)
{
if (ViewState["PageTheme"] == null)
{
if (!Directory.Exists("~/App_Themes/THEMENAME_TO_LOOK_FOR"))
{
Theme = "DEFAULT_THEME"
}
else
{
Theme = "THEMENAME_TO_LOOK_FOR";
}
ViewState["PageTheme"] = Theme;
}
else
{
Theme = ViewState["PageTheme"].ToString();
}
}
Я обычно сохраняю данные в состоянии просмотра, поэтому мне не нужно каждый раз перепроверять, но если вы меняете темы на лету, вам, вероятно, не нужно этого делать.