Asp.net mvc 2 为什么CheckBoxFor会产生运行时错误

Asp.net mvc 2 为什么CheckBoxFor会产生运行时错误,asp.net-mvc-2,Asp.net Mvc 2,复选框连接到的字段可为空 在我看来,我得到了以下错误: 无法隐式转换类型“bool” “bool” model.Product.Exclusive)%%> 如何在不更改数据库设计的情况下修复它?Exclusive不能为null,它在计算表达式时对ViewEngine没有意义。它必须选中或不选中复选框,并用true或false值进行响应。您的模型需要有一个bool值,但这并不意味着您的数据库必须知道这一点。您只需在数据库和模型之间的某个地方进行转换,例如,Model.Exclusive=DAO.

复选框连接到的字段可为空

在我看来,我得到了以下错误:

无法隐式转换类型“bool” “bool”

model.Product.Exclusive)%%>

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

Exclusive不能为null,它在计算表达式时对ViewEngine没有意义。它必须选中或不选中复选框,并用
true
false
值进行响应。您的模型需要有一个
bool
值,但这并不意味着您的数据库必须知道这一点。您只需在数据库和模型之间的某个地方进行转换,例如,
Model.Exclusive=DAO.Exclusive??错误

如果不知道null在数据模式中代表什么,或者不知道如何生成模型对象,就很难给出更多的细节

编辑:还没有测试过这一点,但你可能会通过一些简单的

public bool NoNullExclusive
{
    get { return Exclusive ?? false; }
    set { Exclusive = value; }
}
替换

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

model.Product.nonullullexclusive)%%>

我在分部类中创建了您建议的属性。这是进行此操作的最佳位置吗?如果您的产品类是自动生成的,则是。如果不是,则在类本身或从数据访问对象到模型的映射中。
<%= Html.CheckBoxFor(model => model.Product.Exclusive) %>
<%= Html.CheckBoxFor(model => model.Product.NoNullExclusive) %>