运行时错误:无法隐式转换类型'bool?'布尔。存在显式转换(您是否错过了演员?)
sql database type = bit 相应变量的MVC视图控制器=复选框
问题: 如果sql数据库字段类型是BIT,有3个状态, sql database type = bit(true / false / null)
答案 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
中的Func
为bool
。复选框只有2种状态的原因 - 选中或取消选中等同于true
或false
的状态。
如果您的媒体资源PType1
为bool?
(可以为空),则需要使用
@Html.EditorFor(m => m.PType1)
将生成一个包含3个值的下拉列表,“Not Set”(等同于null
),“True”和“False”。
旁注:“观察:没有可以与相应的sql类型的位”一起使用的复选框控件。就在这里。 @Html.CheckBox()
可以与bit
一起使用,只要该字段为NOT NULL
,等同于bool
。如果您只想存储true
或false
,请将字段设置为NOT NULL