可空的bool值列表始终为空
我有部分观点。 在我的部分中,一些属性是可以为空的布尔值。 如果我选中或取消选中该复选框,则在保存此记录时它始终为空。 如果我想要在取消选中时返回false,那么我该怎么办?取消选中时检查是否为true,否则为null?
这是Entity类:
public string Description { get; set; } [Required] public string DocType { get; set; } [Display(Name = "User")] [Required] public int Key { get; set; } [Display(Name = "Path")] public string Name { get; set; } public bool? ShowFullWidth { get; set; } public List DmFormDefItems { get; set; } public bool? IsEnabled { get; set; }
这是我的部分观点:
if (Model.DmFormDefItems != null) { Enabled @for (int i = 0; i < Model.DmFormDefItems.Count; i++) { @if (Model.DmFormDefItems.ElementAt(i).ShowFullWidth == true) { @Html.CheckBoxFor(m => m.DmFormDefItems[i].ShowFullWidth.HasValue) } else { @Html.CheckBoxFor(m => m.DmFormDefItems[i].ShowFullWidth.HasValue) } @if (Model.DmFormDefItems.ElementAt(i).IsEnabled == true) { @Html.CheckBoxFor(m => m.DmFormDefItems[i].IsEnabled.HasValue) } else { @Html.CheckBoxFor(m => m.DmFormDefItems[i].IsEnabled.HasValue) } }
该复选框只能具有true或false状态。 处理bool时? 我使用下拉列表(NULL / True / False)
public static class BooleanDropdownListForHelper { public static MvcHtmlString BooleanDropdownListFor( this HtmlHelper htmlHelper, Expression> property) { return BooleanDropdownListFor(htmlHelper, property, null); } public static MvcHtmlString BooleanDropdownListFor(this HtmlHelper htmlHelper, Expression> property, object htmlAttributes) { ModelMetadata metadata = ModelMetadata.FromLambdaExpression(property, htmlHelper.ViewData); bool? value = null; if (metadata != null && metadata.Model != null) { if (metadata.Model is bool) value = (bool)metadata.Model; else if (metadata.Model.GetType() == typeof(bool?)) value = (bool?)metadata.Model; } List items = new List () { new SelectListItem() { Text = BooleanTypeFor.Yes, Value = "True", Selected = (value.HasValue && value.Value == true) }, new SelectListItem() { Text = BooleanTypeFor.No, Value = "False", Selected = (value.HasValue && value.Value == false) } }; return htmlHelper.DropDownListFor(property, items, htmlAttributes ?? new { }); } }
首先,你没有绑定到你的boolean属性,你绑定到它的HasValue
属性,它是Nullable
的readonly属性( 参考文档 ),这意味着当你回发时它不能被设置,所以你的控制器中的值将始终是默认null
值。
复选框只有2个状态( true
或false
),但Nullable
有3个状态( true
或false
或null
),因此无法使用复选框输入表示Nullable
。
3种可能的选择
上述就是C#学习教程:可空的bool值列表始终为空分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
- 使用
@Html.EditorFor(m => m.yourNullableBool)
,它将生成一个包含3个值的下拉列表(“True”,“False”和“Not Set”)
- 使用绑定到
Nullable
属性的3个单选按钮,值为true
, false
和null
- 开发自己的html帮助器和jquery插件
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/985209.html
赞 (0)
数据库教程:C/C++ Qt数据库SqlRelationalTable关联表详解
上一篇
2021年12月21日
数据库教程:图文详解HTTP头中的SQL注入
下一篇
2021年12月21日