Ошибка кастинга ASP.net MVC CheckBoxFor

У меня есть объект EF, который связывается с таблицей SQL, которая содержит немного поля под названием "Активный". Я генерирую код Редактирования из шаблона T4, и страница наследовалась объекту EF. Внизу страницы это генерировало CheckBoxFor как это:

<%= Html.CheckBoxFor(model => model.Active) %>

Я получаю замечательный красный, волнистый под моделью. Активный, и сообщение об ошибке говорит, что я не могу неявно преобразовать тип bool? к bool. Так, я попробовал следующее:

<%= Html.CheckBoxFor(model => (bool)model.Active) %>

Это, конечно, не любило это и дало мне эту ошибку:

Система. InvalidOperationException: Шаблоны могут использоваться только с доступом к полю, доступом свойства, индексом массива единственного размера или единственным параметром пользовательские выражения индексатора.

Я, вероятно, пропускаю что-то простое.

17
задан Jeremy Sullivan 15 February 2010 в 19:00
поделиться

1 ответ

Звучит немного wierd. уродливое решение - использовать css, overflow: hidden;

Всякий раз, когда я использую fancybox, полосы прокрутки работают правильно. Убедитесь, что содержимое oc fancybox не задает другую высоту?

Изменить: Просмотрел пример сайта. Кажется, что в содержимом установлена некоторая ширина, которая больше, чем у самого fancybox.

-121--1465403-

Я был прав. Это было то, что вызвало мое программное обеспечение для контроля версий. Когда я получил последнюю версию, она каким-то образом добавила дополнительную копию всех моих сборок с (asif mohammed's conflicted copy blah blah), после того, как я почти подумал о переустановке в VS, мне просто пришлось удалить вкрадчивые диллы, сидящие в моей файловой системе.

Спасибо за все ответы. Научился собирать нагрузки работает, так что все не потеряно.

-121--1704464-

Попробуйте model.Active.Value

Если это поле не должно иметь значения NULL, следует изменить тип данных на стороне базы данных на , а не null .

EDIT

Почему это происходит?

Поле базы данных определено как FIELDNAME BIT NULL . Это означает, что он может содержать три значения: NULL, true и false. Поскольку он может содержать три значения, он отображается в bool? введите в структуре сущности. болван? является другим именем Nullable < bool > , которое обертывается вокруг bool, позволяя ему иметь третье значение: NULL. Так как в качестве параметра StartAxFor требуется одно из двух значений - true или false, то это не может быть исключением параметра Nullable < bool > . Каждый параметр Nullable имеет свойство, называемое значением, которое возвращает упакованный тип. Однако следует помнить, что если поле базы данных будет содержать значение null Nullable < bool > .Value вызовет ошибку. Если вы уверены, что это поле не должно содержать значения NULL, измените тип данных на FIELDNAME BIT NOT NULL и снова создайте модель из базы данных. Это приведет к изменению типа данных из bool? to bool и нет необходимости вызывать свойство Value.

40
ответ дан 30 November 2019 в 11:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: