使用MVC基于会话值启用/禁用CSS

时间:2010-10-05 21:58:02

标签: asp.net-mvc-2 session-state

我对MVC应用程序不熟悉,我想要完成的一件事是根据会话值启用或禁用样式表。

我以这种方式在我的Site.Master页面中引用了样式表:

<%= Html.Stylesheet(“〜/ styles / main.css”,“string”)%> <%= Html.Stylesheet(“〜/ styles / additions.css”,“string”)%>

现在,为了进行测试,我一直在Html.Stylesheet标签周围添加一条if语句:

<%if(Session [“cssRule”] =“enableCss”){%>

<%= Html.Stylesheet(“〜/ styles / main.css”,“screen”)%> <%= Html.Stylesheet(“〜/ styles / additions.css”,“screen”)%>

<%}%>

因此,如果'cssRule'会话值为null,则不加载CSS。目前这个工作正常,但它并不完全是我想要的。现在我在用户登录时在Controller中设置Session值,但最终我需要根据用户是否单击启用或禁用按钮来设置Session变量的值。由于我过去一年半以来一直主要使用webforms,我只想删除一个超链接并为它设置一个事件,但是,这是MVC的未来,所以我需要弄清楚如何做类似的事情这个..

所以我真正的问题是如何通过单击使用MVC的链接来设置“cssRule”值的Session?

1 个答案:

答案 0 :(得分:0)

我假设您要使用标准链接(不是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文件等的页面......但是这个应该可以工作:)