Jak wyrenderować wartość logiczną do zmiennej JavaScript w pliku cshtml?
Obecnie pokazuje to błąd składni:
<script type="text/javascript" >
var myViewModel = {
isFollowing: @Model.IsFollowing // This is a C# bool
};
</script>
Jak wyrenderować wartość logiczną do zmiennej JavaScript w pliku cshtml?
Obecnie pokazuje to błąd składni:
<script type="text/javascript" >
var myViewModel = {
isFollowing: @Model.IsFollowing // This is a C# bool
};
</script>
Odpowiedzi:
Możesz także spróbować:
isFollowing: '@(Model.IsFollowing)' === '@true'
a coraz lepszym sposobem jest użycie:
isFollowing: @Json.Encode(Model.IsFollowing)
@Json.Encode(Model.IsFollowing)
to imho najbardziej eleganckie rozwiązanie. Dziękuję Ci!
@using System.Web.Helpers
aby uzupełnić kod.
Wartość logiczna JSON musi być zapisana małymi literami.
Dlatego spróbuj tego (i upewnij się, że nie ma //
komentarza w wierszu):
var myViewModel = {
isFollowing: @Model.IsFollowing.ToString().ToLower()
};
Lub (uwaga: musisz użyć przestrzeni nazw System.Xml
):
var myViewModel = {
isFollowing: @XmlConvert.ToString(Model.IsFollowing)
};
Ponieważ wyszukiwanie przyniosło mnie tutaj: w ASP.NET Core IJsonHelper
nie ma Encode()
metody. Zamiast tego użyj Serialize()
. Na przykład:
isFollowing: @Json.Serialize(Model.IsFollowing)
var myViewModel = {
isFollowing: '@(Model.IsFollowing)' == "True";
};
Dlaczego True
i nie true
pytasz ... Dobre pytanie:
dlaczego Boolean.ToString wyświetla „True”, a nie „true”
@Model.IsFollowing
rzeczywiście prawidłową składnią JS? A może opiera się na fakcie, że będzie to spowodowane faktem, że jest to wartość logiczna?
'@(Model.IsFollowing)'
Oto kolejna opcja do rozważenia, używając !! konwersja na wartość logiczną.
isFollowing: !!(@Model.IsFollowing ? 1 : 0)
Spowoduje to wygenerowanie następującego po stronie klienta, przy czym 1 zostanie przekonwertowany na prawdę, a 0 na fałsz.
isFollowing: !!(1) -- or !!(0)