Picflight
Picflight

Reputation: 3852

Why is CheckBoxFor producing runtime error

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?

Upvotes: 12

Views: 10107

Answers (1)

pdr
pdr

Reputation: 6440

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) %>

Upvotes: 20

Related Questions