Почему CheckBoxFor создает ошибку времени выполнения

Поле CheckBox подключено к нулевому значению.

По моему мнению, я получаю следующую ошибку:

Невозможно неявно преобразовать тип 'bool?' to 'bool'

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

Как исправить это, не изменяя дизайн базы данных?

Ответ 1

Эксклюзив не может быть Nullable, он не имеет смысла для ViewEngine при оценке выражения. Он должен либо проверить, либо не установить флажок, а также ответить с помощью значения true или false. Ваша модель должна иметь значение bool, но это не значит, что ваша база данных должна это знать. Вам просто нужно сделать перевод где-то между базой данных и моделью, например. Model.Exclusive = DAO.Exclusive ?? false.

Не зная, что представляет собой нуль в вашей схеме данных или как вы создаете объекты модели, трудно дать вам намного больше деталей.

Изменить: не проверял это, но вы могли бы уйти с чем-то простым, как

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

и заменяя

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

с

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