Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Razor,如何将布尔值呈现为JavaScript变量?_Javascript_Asp.net Mvc_Razor - Fatal编程技术网

使用Razor,如何将布尔值呈现为JavaScript变量?

使用Razor,如何将布尔值呈现为JavaScript变量?,javascript,asp.net-mvc,razor,Javascript,Asp.net Mvc,Razor,如何将布尔值呈现为cshtml文件中的JavaScript变量 目前,这显示了一个语法错误: <script type="text/javascript" > var myViewModel = { isFollowing: @Model.IsFollowing // This is a C# bool }; </script> var myViewModel={ isFollowing:@Model.isFollowing//这是

如何将布尔值呈现为cshtml文件中的JavaScript变量

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

<script type="text/javascript" >

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

var myViewModel={
isFollowing:@Model.isFollowing//这是一个C#bool
};
你问为什么
True
而不是
True
。。。好问题:

JSON布尔值必须为小写

因此,请尝试此操作(并确保在该行上有
/
注释):

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


您还可以尝试:

isFollowing: '@(Model.IsFollowing)' === '@true'
更好的方法是使用:

isFollowing: @Json.Encode(Model.IsFollowing)

这是另一个可以考虑的选项,使用!!!转换为布尔值

isFollowing: !!(@Model.IsFollowing ? 1 : 0)
这将在客户端生成以下内容,其中1转换为true,0转换为false

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

因为搜索把我带到了这里:在ASP.NET核心中,
IJsonHelper
没有
Encode()
方法。相反,请使用
Serialize()
。例如:

isFollowing: @Json.Serialize(Model.IsFollowing)    

更易于阅读的解决方案是:

isFollowing: @(Model.IsFollowing ? "true" : "false")

毫无疑问,
@Model.following
的编码是否真的有效?或者它依赖于这样一个事实,因为它恰好是布尔的?@Model.IsFollowing是razor语法,而不是js@gahooa,不,不是,它是用Razor引擎在服务器上解析的。@Nikos,然后再试:
@(Model.IsFollowing)
@Nikos,你试过运行它吗?很多时候这只是VisualStudio的问题,但它运行得非常好。试着运行它!@不是有效的JS运算符。这意味着,它只能在字符串中出现。这个问题让我觉得自己老了。我不知道t是什么,所以我想这是指C#@Nikos;)你的评论毫无意义。这首曲子真的撞到了代表
@Json。Encode(Model.IsFollowing)
是最优雅的解决方案。非常感谢。通常会有不止一个布尔值被使用,在这种情况下,编码整个模型会使事情变得很好并且易于使用。例如:var model=@Html.Raw(Json.Encode(model));然后,您可以直接调用model.IsFollowing(抱歉,我不知道如何正确设置注释代码的格式)使用System.Web.Helpers添加
@以完成代码。轻微更正@(Model.IsFollowing?1:0)非常有效。ToString()方法可能是最有效的方法。使用“@Model.IsFollowing.ToString().ToLowerInvariant()”必须更高效、更简单。使用该方法,字符串和下限绝对是我选项中最干净的,因为它在javascript中读起来很好。感谢您提及asp.net core!
isFollowing: !!(1)  -- or !!(0)
isFollowing: @Json.Serialize(Model.IsFollowing)    
isFollowing: @(Model.IsFollowing ? "true" : "false")