Выбор между CheckBoxFor и TextBoxFor в шаблоне редактора

У меня есть шаблон редактора, который применяется к нескольким типам данных. Большинство из них отображаются TextBoxFor, но я бы хотел использовать CheckBoxFor для логических значений (они не могут иметь значение null). Как сейчас:

if (data.DataTypeName == "Boolean")
{
    @Html.CheckBoxFor(m => m, new { @class = classData })
}
else
{
    @Html.TextBoxFor(m => m, new { @class = classData })
}

Я получаю сообщение об ошибке в CheckBoxFor лямбда: не могу неявно преобразовать тип "объект" в "bool". Существует явное преобразование (вам не хватает приведения?). Если я пробую приведение, я получаю исключение, похожее на это: ASP.net MVC CheckBoxFor ошибка приведения. Однако я не могу использовать это решение, потому что не могу использовать член модели в этом обобщенном решении. Я собираюсь отказаться от мечты?

1 ответ

Решение

То есть ваше свойство относится к типу объекта, и вам нужно во время выполнения определить редактор для этого типа? Если это так, не используйте методы *For и явно приведите и передайте значение:

if (data.DataTypeName == "Boolean")
{
    @Html.CheckBox("", (bool)Model, new { @class = classData })
} 
else
{
    @Html.TextBox("", (string)Model, new { @class = classData })
}
Другие вопросы по тегам