Как привязать битовый тип данных в SQL к логическим / контрольным ячейкам в ASP.NET MVC 2 с помощью DataAnnotations - PullRequest
2 голосов
/ 07 мая 2010

У меня проблема с привязкой логического типа данных к флажку в аннотациях данных MVC 2. Вот мой пример кода:

label>
Is Hot
</label>
<%=Html.CheckBoxFor(model => model.isHot, new {@class="input" })%>

Это всегда вызывает это сообщение об ошибке ниже в (model => model.isHot).

Cannot convert lambda expression to delegate type 'System.Func<Framework.Models.customer,bool>' because some of the return types in the block are not implicitly convertible to the delegate return type

Cannot implicitly convert type 'bool?' to 'bool'. An explicit conversion exists (are you missing a cast?)

Подскажите, пожалуйста, как мне решить эту проблему?

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 07 мая 2010
<%=Html.CheckBoxFor(model => model.isHot ?? false, new {@class="input" })%>

Я думаю, что код выше будет работать для вас

1 голос
/ 09 декабря 2010

Ваша проблема в том, что в Entity Framework есть два способа сопоставить тип данных Bit в SQL с логическим значением. Если вы разрешите нулевые значения в вашей базе данных, тогда тип данных будет Nullable, который теоретически имеет 3 значения: Null, False, True. Это не может быть чисто сопоставлено с Bool, который имеет только 2 значения. См. Дополнительную информацию здесь: ASP.net MVC CheckBox для ошибки приведения

Простой ответ - войти в базу данных и запретить нулевые значения в вашем битовом поле.

1 голос
/ 31 августа 2010

Попробуйте

(model=>(bool)model.isHot)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...