168 votes

Avec Razor, comment rendre un booléen dans une variable JavaScript ?

Comment rendre un booléen à une variable JavaScript dans un fichier cshtml ?

Actuellement, cela montre une erreur de syntaxe :

<script type="text/javascript" >

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

341voto

another_user Points 3440

Vous pouvez également essayer :

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

et un moyen toujours meilleur est d'utiliser :

isFollowing: @Json.Encode(Model.IsFollowing)

62voto

Marc L. Points 655

Car une recherche m'a amené ici : dans ASP.NET Core, IJsonHelper n'a pas de Encode() méthode. Au lieu de cela, utilisez Serialize() . Par exemple :

isFollowing: @Json.Serialize(Model.IsFollowing)

31voto

Lucero Points 38928

Le booléen JSON doit être en minuscules.

Par conséquent, essayez ceci (et assurez-vous que vous n'avez pas l'option // commentaire sur la ligne) :

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

Ou (note : vous devez utiliser l'espace de nom System.Xml ) :

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

15voto

gdoron Points 61066
var myViewModel = {
    isFollowing: '@(Model.IsFollowing)' == "True";
};

Pourquoi True y no true vous demandez... Bonne question :
Pourquoi Boolean.ToString produit-il "True" et non "true" ?

7voto

marxlaml Points 71

Une solution plus facile à lire serait de procéder ainsi :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X