Jer*_*van 17 asp.net-mvc checkboxfor
我有一个绑定到SQL表的EF实体,该表包含一个名为"Active"的位字段.我从T4模板生成编辑代码,页面继承自EF实体.在页面的底部,它生成了一个CheckBoxFor,如下所示:
<%= Html.CheckBoxFor(model => model.Active) %>
Run Code Online (Sandbox Code Playgroud)
我在模型下获得了漂亮的红色波浪形.活跃,并且错误消息说我不能隐式转换类型bool?布尔.所以,我尝试了以下内容:
<%= Html.CheckBoxFor(model => (bool)model.Active) %>
Run Code Online (Sandbox Code Playgroud)
当然,它不喜欢这样,并给了我这个错误:
System.InvalidOperationException:模板只能用于字段访问,属性访问,单维数组索引或单参数自定义索引器表达式.
我可能错过了一些简单的东西.
Luk*_*Led 40
尝试 model.Active.Value
如果此字段不可为空,则应将数据库端的数据类型更改为not null.
编辑
为什么会这样?
您的数据库字段定义为FIELDNAME BIT NULL.这意味着它可以包含三个值:NULL,true和false.因为它可以包含三个值,所以它被映射到bool?输入实体框架.布尔?是另一个名称Nullable<bool>,它是bool的包装,允许它有第三个值:NULL.由于CheckBoxFor需要两个值中的一个 - 真或假,它不能除外Nullable<bool>.每个Nullable都有一个名为value的属性,它返回包装类型.但是你应该知道,当数据库字段包含null时Nullable<bool>.Value会抛出错误.如果您确定此字段不应包含NULL值,则应将其数据类型更改为FIELDNAME BIT NOT NULL并再次从数据库生成模型.这会改变bool的数据类型吗?bool并且不需要调用Value属性.
| 归档时间: |
|
| 查看次数: |
26067 次 |
| 最近记录: |