Шаблон редактора (список переключателей) и элемент модели, вставленный в словарь, имеет тип [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")

Другие вопросы по тегам