web-dev-qa-db-fra.com

À l'aide de Razor, comment puis-je convertir un booléen en une variable JavaScript?

Comment rendre un booléen 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>
127
Nikos

Vous voudrez peut-être aussi essayer:

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

et un moyen toujours meilleur consiste à utiliser:

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

Le booléen JSON doit être en minuscule.

Par conséquent, essayez ceci (et assurez-vous de ne pas avoir le commentaire // Sur la ligne):

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

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

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

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

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

Pourquoi True et pas true vous demandez ... Bonne question:
Pourquoi Boolean.ToString génère-t-il les réponses "True" et non "true"

11
gdoron

Voici une autre option à considérer, en utilisant le !! conversion en booléen.

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

Cela générera ce qui suit du côté client, 1 étant converti en vrai et 0 en faux.

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

Une solution plus facile à lire serait la suivante:

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