MVC4获取Cookie值

时间:2014-10-13 12:08:06

标签: jquery asp.net-mvc

在我的控制器中设置一个简单的cookie值

var menuCookie = new HttpCookie("menuC");
            menuCookie.Value= account.MinimisedMenu.ToString();
            menuCookie.Expires = DateTime.Now.AddHours(24);
            Response.Cookies.Add(menuCookie);

然后在页面上我需要一个bool值

$(document).ready(function () {
  m =@Request.Cookies["menuC"].Value;

        if (m) {
            alert(m);
        };
});

但是我得到了一个" Uncaught ReferenceError:False未定义"

这是浏览器呈现的内容

  var m = false;
        m =False; //<--doe not like

是因为它的大写吗?我需要做些什么才能修复?

2 个答案:

答案 0 :(得分:3)

是的,因为它是大写的,所以JavaScript并不了解它。所以你需要在某个地方将它设置为小写:

选项1:在页面上

$(document).ready(function () {
    m = @Request.Cookies["menuC"].Value.ToLower();
    if (m) {
        alert(m);
    };
});

选项2:在cookie中,这可能是更好的选择(写一次,多读)

menuCookie.Value = account.MinimisedMenu.ToString().ToLower();

答案 1 :(得分:2)

根据您的具体要求,还要记住,有时使用razor更改您的JS更容易,因此客户端浏览器不必考虑那么多(使用cookie从控制器到视图进行通信显然效率低下)。这是一个例子:

$(document).ready(function () {
    @if (MyViewModel.ShowMenuC)
    {
        <text>
        alert("menu c jquery stuff here!");
        </text>
    }
});