web-dev-qa-db-ja.com

Razorを使用して、ブール値をJavaScript変数にレンダリングするにはどうすればよいですか?

CshtmlファイルのJavaScript変数にブール値をレンダリングするにはどうすればよいですか?

現在、これは構文エラーを示しています。

<script type="text/javascript" >

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

また、試してみることもできます。

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

そして、これまで以上に良い方法は以下を使用することです:

isFollowing: @Json.Encode(Model.IsFollowing)
268
another_user

JSONブール値は小文字でなければなりません。

したがって、これを試してください(そして、行に//コメントがあることを確認してください):

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

または(注:名前空間System.Xmlを使用する必要があります):

var myViewModel = {
    isFollowing: @XmlConvert.ToString(Model.IsFollowing)
};
24
Lucero

ASP.NET Coreでは、IJsonHelperにはEncode()メソッドがありません。代わりに、Serialize()を使用してください。例えば。:

isFollowing: @Json.Serialize(Model.IsFollowing)    
16
Marc L.
var myViewModel = {
    isFollowing: '@(Model.IsFollowing)' == "True";
};

Trueではなくtrueである理由...良い質問:
Boolean.ToStringが「true」ではなく「True」を出力する理由

11
gdoron

!!を使用して、考慮する別のオプションを次に示します。ブール値への変換。

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

これにより、クライアント側で次が生成されます。1はtrueに、0はfalseに変換されます。

isFollowing: !!(1)  -- or !!(0)
4
Stuart Hallows

読みやすい解決策はこれを行うことです:

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