Шаблон редактора (список переключателей) и элемент модели, вставленный в словарь, имеет тип [enum], но для словаря требуется тип модели X
Посмотрел вокруг на похожие названия, но ничего на месте или ничего не получалось. Я понимаю, почему я получаю ошибку, я просто пытаюсь выяснить, как я могу это исправить, чтобы использовать мой EditorForModel
, Я получаю эту ошибку:
Элемент модели, передаваемый в словарь, имеет тип "MyNameSpace.ViewModels.MyData+MyEnum", но для этого словаря требуется элемент модели типа "MyNameSpace.ViewModels.MyData".
Моя модель:
[UIHint("MyRadioButton")]
public MyEnum MyRadioRadioButton { get; set; }
//
//
public enum MyEnum
{
Choice1,
Choice2
}
я использую [UIHint]
вызвать EditorTemplate под названием MyRadioButton.cshtml
, Теперь мое мнение также вызывает шаблон EditorTemplate с помощью @Html.EditorForModel
, Это часть страницы просмотра, которая вызывает общий шаблон:
@Html.EditorForModel("BasicDetails")
Оба шаблона находятся в папке /Shared/EditorTemplates/.
Это MyRadioButton.cshtml
шаблон:
<td>
<div class="radio">
@Html.RadioButtonFor(m => m.MyRadioButton, "Choice1")<br />
@Html.RadioButtonFor(m => m.MyRadioButton, "Choice2")
</div>
</td>
Это BasicDetails.cshtml
(вызывается @Html.EditorForModel
выше):
@using MyNameSpace.ViewModels
@model MyData
<table>
@Html.EditorFor(x => x.FirstName)
@Html.EditorFor(x => x.LastName)
@Html.EditorFor(x => x.MyRadioButton) //This is where my error is thrown
</table>
Я хочу избежать чего-либо сложного в шаблоне редактора radiobuttonlist выше, потому что там есть другие вещи (я удалил все лишнее и все еще получаю ошибку). Я использую определенный radiobuttonlist несколько раз в разных представлениях (именно поэтому я хотел шаблонировать его, а не копировать / вставлять). Любой совет?
2 ответа
Сейчас я просто полагаюсь на EditorForModel
вытащить шаблон из /EditorTemplates/
и вместо того, чтобы использовать [UIHint]
для списка переключателей, я просто вставляю @Html.RadioButtonFor
группа внутри этого шаблона. Это работает для меня и служит для минимизации копирования / вставки.
В какой-то момент я должен научиться останавливаться на шаблоне> для шаблона> для шаблонной парадигмы и знать, когда достаточно достаточно.:)
Из BasicDetails.cshtml вы вызываете Editor для как @Html.EditorFor(x => x.MyRadioButton)
,
Это означает, что тип модели, переданный в EditorFor, является типом Enum.
Но внутри шаблона EditorFor (MyRadioButton.cshtml), я думаю, вы использовали класс в качестве модели. так что ошибки.
Итак, нам нужно изменить тип модели в MyRadioButton.cshtml на MyEnum (с пространством имен)
или же
передать ту же модель в редактор для шаблона @Html.EditorFor(x=>x,"MyRadioButton")