Why is CheckBoxFor producing runtime error

不想你离开。 提交于 2019-11-27 21:22:46

问题


The field the CheckBox is wired to is nullable.

On my view I get the following error:

Cannot implicitly convert type 'bool?' to 'bool'

<%= Html.CheckBoxFor(model => model.Product.Exclusive) %>

How do I fix it without having to change the database design?


回答1:


Exclusive cannot be Nullable, it makes no sense to the ViewEngine when evaluating the expression. It has to either check or not check the checkbox and also respond with a true or false value. Your model needs to have a bool value but that doesn't mean your database has to know that. You just have to do a translation somewhere between the database and the Model, eg. Model.Exclusive = DAO.Exclusive ?? false.

Without knowing what null represents in your data schema or how you generate your model objects, it's hard to give you a lot more detail than that.

Edit: haven't tested this but you might get away with something as simple as

public bool NoNullExclusive
{
    get { return Exclusive ?? false; }
    set { Exclusive = value; }
}

and replacing

<%= Html.CheckBoxFor(model => model.Product.Exclusive) %>

with

<%= Html.CheckBoxFor(model => model.Product.NoNullExclusive) %>


来源:https://stackoverflow.com/questions/2490790/why-is-checkboxfor-producing-runtime-error

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!