Включение/отключение CSS на основе значения сеанса с использованием MVC

Я новичок в приложениях MVC, и одна вещь, которую я пытаюсь выполнить, — это включение или отключение таблиц стилей на основе значения сеанса.

У меня есть таблицы стилей, указанные на моей странице Site.Master следующим образом:

‹%=Html.Stylesheet("~/styles/main.css", "string")%> ‹%=Html.Stylesheet("~/styles/additions.css", "string")%>

Прямо сейчас, для тестирования, я помещал оператор if вокруг тегов Html.Stylesheet, говоря:

‹% if (Session["cssRule"] = "enableCss") { %>

‹%=Html.Stylesheet("~/styles/main.css", "экран")%> ‹%=Html.Stylesheet("~/styles/additions.css", "экран")%>

<%} %>

Поэтому, если значение сеанса cssRule равно null, CSS не загружается. В настоящее время это работает нормально, но это не совсем то, что я ищу. Прямо сейчас я устанавливаю значение сеанса в контроллере, когда пользователь входит в систему, но в конечном итоге мне нужно установить значение переменной сеанса в зависимости от того, нажимает ли пользователь кнопку включения или отключения. Поскольку последние полтора года я в основном использую веб-формы, я просто хочу бросить гиперссылку и установить для нее событие, но, увы, это будущее MVC, поэтому мне нужно выяснить, как я могу сделать что-то вроде это..

Итак, мой реальный вопрос заключается в том, как я могу установить сеанс значения «cssRule», щелкнув ссылку с помощью MVC?


person kronkk    schedule 05.10.2010    source источник


Ответы (1)


Я предполагаю, что вы хотите использовать стандартную ссылку (не ajax) и что ваш основной вид — это индекс.

Просто добавьте метод в свой контроллер (псевдокод)

public ActionResult ToggleCSS()
{
    if (Session["cssRule"] != null && Session["cssRule"] == "enableCSS") 
    {
          Session["cssRule"] = "disableCSS";
    }
    else
    {
          Session["cssRule"] = "enableCSS";
    }
    return View("Index");
}

Затем, по вашему мнению, используйте

<%= Html.ActionLink("ToggleCSS", "ControllerName") %>

Вы можете использовать множество причудливых методов для получения одного и того же результата; используйте ajax и перезагрузите страницу или нет, или перенаправьте на страницу со списком файлов css для применения и т. д., но это должно работать :)

person samy    schedule 05.10.2010
comment
Спасибо за ответ. Я знаю, что это было 4 года спустя, но это сработало отлично - person kronkk; 11.06.2015