Ответ 1
В качестве логического значения (bool
) значения всегда будут "True" или "False". Если вы хотите представить их по-разному при преобразовании в строку, вы можете сделать следующее в своем представлении:
@Model.IsAdded.ToString().ToLower()
Верните true
вместо True
из контроллера для просмотра.
Я сохраняю в переменную логическое значение, которое указывает, существует ли продукт в корзине/сводке.
Для этого я делаю следующее:
[...]
IsAdded = sessionStore.CheckExistanceOnSummary(product.productId)
[...]
Но когда я показываю значение IsAdded
в представлении, возвращается значение True
или False
- и JavaScript ожидает true
или false
.
Мне нужно отправить true
или false
вместо того, чтобы отправлять С#.
Я уже пытался изменить приведенный выше фрагмент кода следующим образом:
IsAdded = (sessionStore.CheckExistanceOnSummary(product.productId) ?
"true" :
"false")
Но отладчик возвращает мне следующую ошибку:
Ошибка 5 Не удается неявно преобразовать тип 'string' в 'bool'
Реализация CheckExistanteOnSummary
:
public bool CheckExistanceOnSummary(Nullable<int> productId)
{
List<Products> productsList =
(List<Products>)Session[summarySessionIndex];
if (productsList.Where
(product => product.id == (int)productId).FirstOrDefault() == null)
return false;
else
return true;
}
Я прочитал эту тему, но мне это не помогло.
В качестве логического значения (bool
) значения всегда будут "True" или "False". Если вы хотите представить их по-разному при преобразовании в строку, вы можете сделать следующее в своем представлении:
@Model.IsAdded.ToString().ToLower()
Это не будет работать, поскольку IsAdded является логическим, а "true" - строкой
IsAdded = (sessionStore.CheckExistanceOnSummary(product.productId) ?
"true" :
"false")
Попробуйте использовать его в javascript, конвертировав его в файл Lovercase().
Вы можете создать шаблон отображения для bool, который является "истинным" / "ложным" для целей повторного использования:
Создайте шаблон отображения под названием "JsBoolean.cshtml":
В вашем представлении используйте @Html.DisplayFor()
и укажите новый шаблон.
JsBoolean.cshtml:
@model Boolean
@(Model ? "true" : "false")
На ваш взгляд:
@Html.DisplayFor(m => m.IsAdded, "JsBoolean")
Используя эту схему, вы добавили "повторное использование" в свои представления для целей javascript. Вы также можете использовать это (если необходимо), чтобы сделать логические значения отображаемыми как "да" или "нет" или что-то еще.
Edit:
Если ваши логические значения будут всегда быть строчными, то вы можете сделать свой собственный просмотр по умолчанию, назвав его "Boolean.cshtml". Затем вы можете упростить свое использование:
@Html.DisplayFor(m => m.IsAdded)
Вы можете добавить дополнительное свойство только для чтения (например, jsIsAdded), которое возвращает IsAdded.ToString(). ToLower().
Возможно, вы могли бы включить следующий код:
IsAdded.ToString().ToLower();
Пример:
public string JSCheckExistanceOnSummary(Nullable<int> productId)
{
return CheckExistanceOnSummary(productId).ToString().ToLower();
}
Не могли бы вы использовать бит? 0 или 1 таким образом, независимо от языка. Также большая часть bool, скорее всего, немного (проверьте, например, sql)