True вместо True (С#) - программирование
Подтвердить что ты не робот

True вместо True (С#)

Цель

Верните 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;
}

Дублированный?

Я прочитал эту тему, но мне это не помогло.

4b9b3361

Ответ 1

В качестве логического значения (bool) значения всегда будут "True" или "False". Если вы хотите представить их по-разному при преобразовании в строку, вы можете сделать следующее в своем представлении:

@Model.IsAdded.ToString().ToLower()

Ответ 2

Это не будет работать, поскольку IsAdded является логическим, а "true" - строкой

IsAdded = (sessionStore.CheckExistanceOnSummary(product.productId) ? 
    "true" : 
    "false")

Попробуйте использовать его в javascript, конвертировав его в файл Lovercase().

Ответ 3

Вы можете создать шаблон отображения для 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)

Ответ 4

Вы можете добавить дополнительное свойство только для чтения (например, jsIsAdded), которое возвращает IsAdded.ToString(). ToLower().

Ответ 5

Возможно, вы могли бы включить следующий код:

IsAdded.ToString().ToLower();

Пример:

public string JSCheckExistanceOnSummary(Nullable<int> productId)
{
    return  CheckExistanceOnSummary(productId).ToString().ToLower();
}

Ответ 6

Не могли бы вы использовать бит? 0 или 1 таким образом, независимо от языка. Также большая часть bool, скорее всего, немного (проверьте, например, sql)