CheckBox连接的字段可以为空。

在我看来,出现以下错误:


无法隐式转换类型“布尔”?
“布尔”


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


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

最佳答案

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) %>

07-26 01:06