2015-05-22 2 views
0

У меня есть CheckBoxFor для bool? поля в представлении, однако он подчеркивает его с красной поговоркой:конвертировать обнуляемый BOOL регулярно BOOL в лямбда

не может неявно преобразовать логическое значение? к BOOL, вам не хватает слепок

проблема, это в лямбда:

bool? nullable {get; set;} 
CheckBoxFor(m => m.nullable) 

Если это не лямбда, я знаю, что я могу сделать:

(bool)nullable 

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

CheckBoxFor(m => m.nullable.value) 

, но это не кажется, сохраняя свое значение в контроллере, я получаю нулевое значение обратно.

+1

Что вы на самом деле ожидаете, если значение «null»? – Servy

+1

Что происходит, когда вы пишете 'CheckBoxFor (m => (bool) m.nullable)'? Лямбда - это просто анонимные методы. – neontapir

+0

@neontapir Я думаю, что попробовал, и мне это не понравилось, позвольте мне попробовать еще раз. –

ответ

2

CheckBoxFor(m => m.nullable ?? false) должен достичь вашей цели.

+0

Вы проверили это? Я думаю, что есть особые требования к выражению, предоставленному CheckBoxFor. Как MVC вернет карту обратно в свойство «nullable»? Выполняет ли это глубокую проверку дерева выражений? Из-за этого выражение всегда будет ложным в возвращенном объекте на пост? – Bas

+0

Я предполагаю, что 'CheckBoxFor (m => m.HasValue? M.Value: false)' может быть предпочтительным. – heltonbiker

+0

@heltonbiker 'm.GetValueOrDefault()' делает это для нас. – Bas

Смежные вопросы