@ Html.CheckBoxFor(无法使用null布尔值?

时间:2015-06-17 17:24:33

标签: asp.net-mvc twitter-bootstrap asp.net-mvc-4 razor

运行时错误:无法隐式转换类型'bool?'布尔。存在显式转换(您是否错过了演员?)

sql database type = bit 相应变量的MVC视图控制器=复选框

问题: 如果sql数据库字段类型是BIT,有3个状态, sql database type = bit(true / false / null)

2 个答案:

答案 0 :(得分:1)

复选框只有2个状态...已检查vs未选中。因此null的第三个状态不合逻辑。如果您尝试将null视为false,则在创建视图模型时在控制器中执行该转换。

myViewModel.MyBool = dto.MyBitColumn != null && dto.MyBitColumn;

这样的东西

现在,您可以使用myViewModel.MyBool作为复选框。

答案 1 :(得分:0)

@CheckBoxFor()方法仅适用于boolean属性。该方法的签名是

public static MvcHtmlString CheckBoxFor<TModel>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, bool>> expression)

请注意TResult中的Funcbool。复选框只有2种状态的原因 - 选中或取消选中等同于truefalse的状态。

如果您的媒体资源PType1bool?(可以为空),则需要使用

@Html.EditorFor(m => m.PType1)

将生成一个包含3个值的下拉列表,“Not Set”(等同于null),“True”和“False”。

旁注:“观察:没有可以与相应的sql类型的位”一起使用的复选框控件。就在这里。 @Html.CheckBox()可以与bit一起使用,只要该字段为NOT NULL,等同于bool。如果您只想存储truefalse,请将字段设置为NOT NULL