首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ASP.net MVC CheckBoxFor强制转换错误

ASP.net MVC CheckBoxFor强制转换错误
EN

Stack Overflow用户
提问于 2010-02-16 02:12:14
回答 1查看 26.9K关注 0票数 17

我有一个EF实体,它绑定到一个SQL表,该表包含一个名为"Active“的位字段。我从T4模板生成编辑代码,页面继承自EF实体。在页面的底部,它生成了一个如下所示的CheckBoxFor:

代码语言:javascript
复制
<%= Html.CheckBoxFor(model => model.Active) %>

我在model.Active下得到了非常棒的红色squiggly,并且错误消息说我不能隐式转换bool类型?敬布尔。因此,我尝试了以下方法:

代码语言:javascript
复制
<%= Html.CheckBoxFor(model => (bool)model.Active) %>

当然,它不喜欢这样,并给了我这个错误:

System.InvalidOperationException:模板只能与字段访问、属性访问、一维数组索引或单参数自定义索引器表达式一起使用。

我可能漏掉了一些简单的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-02-16 03:19:58

试试model.Active.Value

如果该字段不能为空,那么您应该将数据库端的数据类型更改为not null

编辑

这一切为什么要发生?

您的数据库字段定义为FIELDNAME BIT NULL。这意味着它可以包含三个值: NULL、true和false。因为它可以包含三个值,所以它被映射到bool?在实体框架中键入。布尔?是Nullable<bool>的另一个名称,它是bool的包装器,允许它有第三个值: NULL。由于CheckBoxFor需要两个值之一- true或false,所以它不能排除Nullable<bool>。每个Nullable都有一个名为value的属性,它返回包装的类型。但是您应该知道,当数据库字段包含null时,Nullable<bool>.Value将抛出一个错误。如果您确定此字段不应包含空值,则应将其数据类型更改为FIELDNAME BIT NOT NULL,然后再次从数据库生成模型。这会将数据类型从bool更改吗?设置为bool,则不需要调用Value属性。

票数 41
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2267975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档