Я не использую запеченные в темах, но я использую темы jQuery UI.То, как я справляюсь с этим, находится на моей главной странице. У меня есть логика, которая получает текущую тему из общей модели представления.Главная страница строго соответствует этой модели представления.Общие свойства viewmodel обновляются из пользовательских настроек и других источников в общем базовом контроллере, который наследуют все мои контроллеры.Я делаю это в OnActionExecuted.Я проверяю, является ли результат ViewResult, затем приведу результат из ViewData к свойству ActionExecutedContext.Result к моей общей модели представления и задаю свойство.Главная страница использует значение свойства для построения URL-адреса для файла CSS.
Модель
public abstract class CommonViewModel
{
public string Theme { get; set; }
// ...
}
Контроллер
public abstract class BaseController : Controller
{
public override void OnActionExecuted( ActionExecutedContext context )
{
if (context.Result is ViewResult)
{
var model = ((ViewResult)context.Result).ViewData.Model as CommonViewModel;
if (model != null)
{
var preferences = ...get from database for current user...
model.Theme = preferences.Theme;
}
}
}
}
Мастер обратите внимание, что для создания ссылки на таблицу стилей используется собственный HtmlHelper, вы можете сделать это вручную.
<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage<...CommonViewModel>" >
<%: Html.Stylesheet( "themes/" + Model.Theme + ".css" ) %>