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

Pic*_*ght 12 asp.net-mvc-2

CheckBox连接到的字段是可空的.

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

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

<%= Html.CheckBoxFor(model => model.Product.Exclusive) %>
Run Code Online (Sandbox Code Playgroud)

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

pdr*_*pdr 18

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

如果不知道null在数据模式中表示什么或者如何生成模型对象,那么很难给出更多详细信息.

编辑:没有测试这个,但你可能会逃避一些简单的事情

public bool NoNullExclusive
{
    get { return Exclusive ?? false; }
    set { Exclusive = value; }
}
Run Code Online (Sandbox Code Playgroud)

并取代

<%= Html.CheckBoxFor(model => model.Product.Exclusive) %>
Run Code Online (Sandbox Code Playgroud)

<%= Html.CheckBoxFor(model => model.Product.NoNullExclusive) %>
Run Code Online (Sandbox Code Playgroud)