为什么CheckBoxFor会产生运行时错误

时间:2010-03-22 08:30:41

标签: asp.net-mvc-2

CheckBox连接的字段可以为空。

在我看来,我收到以下错误:

  

无法隐式转换类型'bool?'   'bool'

<%= Html.CheckBoxFor(model => model.Product.Exclusive) %>

如何在不更改数据库设计的情况下修复它?

1 个答案:

答案 0 :(得分:18)

Exclusive不能为Nullable,在评估表达式时ViewEngine没有任何意义。它必须选中或不选中复选框,并使用truefalse值进行回复。您的模型需要具有bool值,但这并不意味着您的数据库必须知道这一点。你只需要在数据库和模型之间进行翻译,例如。 Model.Exclusive = DAO.Exclusive ?? false

在不知道数据模式中代表什么null或者如何生成模型对象的情况下,很难给出更多详细信息。

编辑:没有对此进行测试,但您可能会使用像

这样简单的东西
public bool NoNullExclusive
{
    get { return Exclusive ?? false; }
    set { Exclusive = value; }
}

并替换

<%= Html.CheckBoxFor(model => model.Product.Exclusive) %>

<%= Html.CheckBoxFor(model => model.Product.NoNullExclusive) %>