Csharp/C#教程:可空的bool值列表始终为空分享


可空的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) { 
@for (int i = 0; i < Model.DmFormDefItems.Count; i++) { }
Enabled
@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个状态( truefalse ),但Nullable有3个状态( truefalsenull ),因此无法使用复选框输入表示Nullable

3种可能的选择

上述就是C#学习教程:可空的bool值列表始终为空分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

  1. 使用@Html.EditorFor(m => m.yourNullableBool) ,它将生成一个包含3个值的下拉列表(“True”,“False”和“Not Set”)
  2. 使用绑定到Nullable属性的3个单选按钮,值为truefalsenull
  3. 开发自己的html帮助器和jquery插件

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/985209.html

(0)
上一篇 2021年12月21日
下一篇 2021年12月21日

精彩推荐