【问题标题】:Why is CheckBoxFor producing runtime error为什么 CheckBoxFor 会产生运行时错误
【发布时间】:2010-03-22 08:30:40
【问题描述】:

CheckBox 连接到的字段可以为空。

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

不能隐式转换类型'bool?' '布尔'

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

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

【问题讨论】:

    标签: asp.net-mvc-2


    【解决方案1】:

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

    【讨论】:

    • 我在部分类中创建了您建议的属性。这是进行这种操作的最佳地点吗?
    • 如果您的产品类是自动生成的,那么是的。如果不是,则在类本身或从数据访问对象到模型的映射中。
    猜你喜欢
    • 2014-07-23
    • 1970-01-01
    • 2015-02-22
    • 1970-01-01
    • 1970-01-01
    • 2011-10-28
    • 2019-08-23
    • 2018-03-17
    • 1970-01-01
    相关资源
    最近更新 更多