Я реализую веб-приложение с использованием ASP.NET MVC3. В приложении я хочу добавить опцию переключения между CSS-файлами (для тем), основываясь на нажатии на некоторые ссылки. Я провел небольшое исследование и придумал следующее:
- Чтобы передать данные в site.master, хорошим решением является создание абстрактного контроллера и его наследование в другие контроллеры, для которых site.master используется в качестве шаблона, согласно этой статье: Передача данных для просмотра главных страниц
- Я могу передать сообщение viewbag по ссылке, которая управляет URL-адресом файла css, чтобы установить используемый текущий файл css, основываясь на коде, который, как я вижу, передается в сценарии в верхней части страницы site.master:
script src = "<%: Url.Content (" ~ / Scripts / jquery-1.5.1.min.js ")%>" type = "text / javascript"
Итак, я создал абстрактный контроллер ApplicationController, используя следующий метод:
public ApplicationController()
{ViewBag.NewMessage = "../../Content/Site2.css";}
А в site.master я включил эту ссылку:
<link href="<%: (string) ViewBag.NewMessage %>" rel="stylesheet" type="text/css" />
Однако, похоже, это не работает, так как это интерпретируется как:
<link href="<%: (string) ViewBag.NewMessage %>" rel="stylesheet" type="text/css" />
И только когда я удаляю кавычки:
<link href=<%: (string) ViewBag.NewMessage %> rel="stylesheet" type="text/css" />
правильно ли он интерпретируется (и веб-страница отображается с правильным css), за исключением того, что он нарушает стандарты HTML:
<link href=../../Content/Site2.css rel="stylesheet" type="text/css" />
Любое предложение о том, как решить эту проблему, или есть более элегантное решение, которое мне не хватает? Я собирался продолжить и реализовать переменные в ApplicationController, которые выбираются на основе ссылок, которые пользователь нажимает вверху страницы, для переключения между стилями CSS.
Спасибо!