Вот как отобразить логическое свойство bool?
в DropDownListFor
:
@model SomeModel
<!-- ...some HTML... -->
@Html.DropDownListFor(m => m.NullableBooleanProperty, new SelectList(
new[] {
new { Value = "", Text = "-- Choose YES or NO --" },
new { Value = "true", Text = "YES" },
new { Value = "false", Text = "NO" },
},
"Value",
"Text"
))
А вот как сопоставить его с CheckBoxFor
, используя свойство , не допускающее обнуление, в качестве обходного пути:
В ViewModel:
public bool NullableBooleanPropertyProxy
{
get
{
return NullableBooleanProperty == true;
}
set
{
NullableBooleanProperty = value;
}
}
В представлении:
@model SomeModel
<!-- ...some HTML... -->
@Html.CheckBoxFor(m => m.NullableBooleanPropertyProxy)
Единственным недостатком этого обходного пути является то, что значение null
будет рассматриваться как false
: если вы не можете принять это, лучше использовать элемент управления, который может поддерживать три состояния, такие как вышеупомянутый DropDownListFor
.
Для получения дополнительной информации, прочитайте это сообщение в моем блоге.