Як зробити реле булевої змінної JavaScript у файлі cshtml?
Наразі це показує синтаксичну помилку:
<script type="text/javascript" >
var myViewModel = {
isFollowing: @Model.IsFollowing // This is a C# bool
};
</script>
Як зробити реле булевої змінної JavaScript у файлі cshtml?
Наразі це показує синтаксичну помилку:
<script type="text/javascript" >
var myViewModel = {
isFollowing: @Model.IsFollowing // This is a C# bool
};
</script>
Відповіді:
Ви також можете спробувати:
isFollowing: '@(Model.IsFollowing)' === '@true'
і все кращим способом є використання:
isFollowing: @Json.Encode(Model.IsFollowing)
@Json.Encode(Model.IsFollowing)
це найелегантніше рішення. Дякую!
@using System.Web.Helpers
щоб заповнити код.
Булевий JSON повинен бути малі.
Тому спробуйте це (і переконайтесь, що не маєте //
коментаря в рядку):
var myViewModel = {
isFollowing: @Model.IsFollowing.ToString().ToLower()
};
Або (зверніть увагу: потрібно використовувати простір імен System.Xml
):
var myViewModel = {
isFollowing: @XmlConvert.ToString(Model.IsFollowing)
};
Оскільки пошук привів мене сюди: в ASP.NET Core IJsonHelper
немає Encode()
методу. Натомість використовуйте Serialize()
. Наприклад:
isFollowing: @Json.Serialize(Model.IsFollowing)
var myViewModel = {
isFollowing: '@(Model.IsFollowing)' == "True";
};
Чому True
і ні true
ви не задаєте ... Добре запитання:
Чому Boolean.ToString виводить "True", а не "true"
@Model.IsFollowing
фактично дійсного синтаксису JS? Або покладається на те, що це буде тому, що воно буває булевим?
'@(Model.IsFollowing)'
Ось ще один варіант, який слід розглянути, використовуючи !! перетворення на булеву.
isFollowing: !!(@Model.IsFollowing ? 1 : 0)
Це призведе до створення наступного на стороні клієнта, 1 перетворюється на істинне, а 0 - на хибне.
isFollowing: !!(1) -- or !!(0)