【问题标题】:Convert bool to bool? in @Html.CheckBoxFor() call in ASP.NET MVC [duplicate]将布尔转换为布尔?在 ASP.NET MVC 中的 @Html.CheckBoxFor() 调用中[重复]
【发布时间】:2018-03-25 19:14:56
【问题描述】:

我正在尝试从 CheckBox 中检索 bool 值并将其分配给变量 m.IsAdministrator,它的类型为 bool?

@Html.CheckBoxFor(m => (bool?)(m.isAdministrator))

但是,此语法会出错。如何将bool CheckBoxFor 返回值分配给bool?

【问题讨论】:

  • 错误是什么?
  • @RufusL "Cannot cast from bool? to bool" 在 MVC 框架尝试编译视图时,因为它需要 <Expression<Func<TModel,bool>>> 但找到 <Expression<Func<TModel,bool?>>>
  • 要从bool? 中获取bool,如果bool?null,您希望默认值为false,那么您将使用.Value 属性如果.HasValuetrue,否则使用false。您可以使用?: 三元运算符来做到这一点:bool x = m.isAdministrator.HasValue ? m.isAdministrator.Value : false;
  • @RufusL 它不适用于 MVC 绑定。请查看重复的问题。
  • A bool? 有 3 个状态(truenullfalse)。一个复选框只有 2 个,因此您不能为 bool? 使用复选框。要么创建属性 bool,要么使用 EditorFor(m =>m.isAdministrator),这将生成一个包含 3 个值的下拉列表

标签: c# asp.net-mvc


【解决方案1】:
@Html.CheckBoxFor(m => m.isAdministrator.Value)

并且一定要检查它之前是否有价值,否则你会得到异常。

但是,在视图模型中使用 nullable 并不是最佳做法。

【讨论】:

  • 这个绑定会编译,但是没有意义。 POST 上的值将是 null
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-03
  • 2010-10-15
  • 1970-01-01
  • 2011-05-19
相关资源
最近更新 更多