在我的控制器中设置一个简单的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
是因为它的大写吗?我需要做些什么才能修复?
答案 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>
}
});