我对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?
答案 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文件等的页面......但是这个应该可以工作:)