使用Razor,我如何渲染布尔到JavaScriptvariables?

如何在cshtml文件中将布尔值呈现为JavaScriptvariables?

目前这显示一个语法错误:

<script type="text/javascript" > var myViewModel = { isFollowing: @Model.IsFollowing // This is a C# bool }; </script> 

你也可以尝试:

 isFollowing: '@(Model.IsFollowing)' === '@true' 

而更好的方法是使用:

 isFollowing: @Json.Encode(Model.IsFollowing) 

JSON布尔值必须是小写的。

因此,试试这个(并确保nto上有//注释):

 var myViewModel = { isFollowing: @Model.IsFollowing.ToString().ToLower() }; 

或者(注意:你需要使用命名空间System.Xml ):

 var myViewModel = { isFollowing: @XmlConvert.ToString(Model.IsFollowing) }; 
 var myViewModel = { isFollowing: '@(Model.IsFollowing)' == "True"; }; 

为什么是True而不是true你问…好问题:
为什么Boolean.ToString输出“True”而不是“true”

因为search带给我的是:在ASP.NET Core中, IJsonHelper没有Encode()方法。 而是使用Serialize() 。 例如:

 isFollowing: @Json.Serialize(Model.IsFollowing) 

这是另一个select考虑,使用! 转换为布尔值。

 isFollowing: !!(@Model.IsFollowing ? 1 : 0) 

这将在客户端生成以下内容,其中1被转换为true,0为false。

 isFollowing: !!(1) -- or !!(0)