Флажок для логического значения, допускающего значение NULL

Моя модель имеет логическое значение, которое должно допускать значение NULL

public bool? Foo
{
   get;
   set;
}

, поэтому в моем Razor cshtml у меня есть

@Html.CheckBoxFor(m => m.Foo)

, но это не работает. Также не выполняется приведение с помощью (bool). Если я сделаю

@Html.CheckBoxFor(m => m.Foo.Value)

, это не вызовет ошибки, но не привяжется к моей модели при публикации, а для foo установлено значение null. Как лучше всего отобразить Foo на странице и привязать его к моей модели в сообщении?

92
задан Erik Philips 4 October 2016 в 16:02
поделиться

1 ответ

Переключатели полезны, но они не позволяют Вам отмена выбора . Если Вы хотите это поведение, то рассматриваете использование выпадающего/избранного. Следующий код генерирует SelectList, и это связывает успешно с nullable булевской переменной:

public static SelectList GetBoolTriState()
{
    var items = new List<SelectListItem>
    {
        new SelectListItem {Value = "", Text = ""},
        new SelectListItem {Value = "True", Text = "Yes"},
        new SelectListItem {Value = "False", Text = "No"},
    };

    return new SelectList(items, "Value", "Text");
}
0
ответ дан 24 November 2019 в 06:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: