如何使用DataAnnotations将SQL中的bit数据类型绑定到ASP.NET MVC 2中的Booleans / CheckBoxes

时间:2010-05-07 07:20:33

标签: asp.net-mvc asp.net-mvc-2

我遇到了将数据类型boolean绑定到MVC 2数据注释中的复选框的问题 这是我的代码示例:

label>
Is Hot
</label>
<%=Html.CheckBoxFor(model => model.isHot, new {@class="input" })%>

它始终在(model =&gt; model.isHot)下面引发此错误消息。

Cannot convert lambda expression to delegate type 'System.Func<Framework.Models.customer,bool>' because some of the return types in the block are not implicitly convertible to the delegate return type

Cannot implicitly convert type 'bool?' to 'bool'. An explicit conversion exists (are you missing a cast?)

请建议我如何解决这个问题?

提前致谢。

3 个答案:

答案 0 :(得分:2)

<%=Html.CheckBoxFor(model => model.isHot ?? false, new {@class="input" })%>

我认为上面的代码适合你

答案 1 :(得分:1)

尝试

(model=>(bool)model.isHot)

答案 2 :(得分:1)

您的问题是实体框架有两种方法将SQL中的Bit数据类型映射到Boolean。如果在数据库中允许空值,则数据类型为Nullable,理论上它具有3个值:Null,False,True。这不能干净地映射到只有2个值的Bool。在此处查看更多信息:ASP.net MVC CheckBoxFor casting error

简单的答案是进入你的数据库并禁止你的比特字段上的空值。