【问题标题】:how to generate check box using @HTML.CheckboxFor with bool?如何使用 @HTML.CheckboxFor 和 bool 生成复选框?
【发布时间】:2014-11-29 01:55:40
【问题描述】:

在表单中,我想添加一个 CheckBox 以将模型值绑定回操作。我的模型列的类型为bool?

我尝试了以下代码,但出现错误"Cannot implecitly convert type bool? to bool"

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

请帮助我正确使用@HTML.CheckBoxFor。

【问题讨论】:

标签: c# .net asp.net-mvc asp.net-mvc-4 asp.net-mvc-5


【解决方案1】:

而不是CheckBoxFor 使用

@Html.EditorFor(m=>m.AccomPublic)

这将呈现一个包含 3 个值(真、假和未设置)的下拉列表

【讨论】:

  • 感谢@Stephen,但无法更改 UI。
  • 您不能为可空的bool 使用复选框。复选框有 2 种状态(真和假),其中可空的 bool 有 3 种状态(真、假和空),因此您需要将属性更改为 bool,或更改 UI 以使用下拉菜单(或 3 个单选按钮),或创建您自己的控件
  • 如果我执行类似 "" 之类的操作,它是否适用于模型绑定?其实我试过了,它不起作用。单击或取消单击复选框不会更改模型中的值。这是预期的行为吗?
  • 不,它不会起作用,因为未选中的复选框不会回发,因此您可以收到的唯一可能值是true(选中)或null(未选中,因此没有任何回发)。你永远无法检查false
【解决方案2】:

此错误是因为您的属性是可为空的类型,即 bool? 将您的属性设置为 public bool nameofproperty{get;set;} 并使用 @Html.checkboxFor(m=>m.nameofproperty)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 2011-09-15
    相关资源
    最近更新 更多