使用jquery的viewbag – asp.net mvc 3

我在控制器中将ViewBag.IsLocal设置为true。 我想使用jquery检查ViewBag值并显示警报。

码:

if(@ViewBag.IsLocal == true) { alert("yeah"); } 

我从来没有得到警报。 当我使用Firebug查看ViewBag的值时,它是True(使用大写字母T)。 我必须做一些像==’真’的事吗? 我尝试了所有这一切,但没有一个有效。

谢谢你的帮助。

H

如果您在渲染页面上查看源代码,那么插入什么代替了您的剃刀金块? 如果IsLocal是bool类型,我想你会看到:

 @if(True == true) { alert("yeah"); } 

原因是因为true.ToString()True

在这种情况下,您需要在那里进行字符串比较:

 if('@ViewBag.IsLocal' == 'True') { alert("yeah"); } 

假设您已在控制器操作中将IsLocal属性设置为布尔值:

 public ActionResult Index() { ViewBag.IsLocal = true; return View(); } 

你可以在视图上这样做:

  

请不要使用ViewBag / ViewData。 使用视图模型和强类型视图。

所以这是我更喜欢的更好的方法。 您可以将JSON序列化为javascript变量,然后处理它。 像这样:

 @model MyViewModel  

显然,如果您不需要整个视图模型,那么JSON只能序列化它的一个子集=>只有客户端脚本需要的部分。

您可以使用以下function

 function parseBoolean(str) { return /^true$/i.test(str); } 

并用它作为

 if(parseBoolean('@ViewBag.IsLocal') == true) { alert("yeah"); }