Мое (неверное?) Понимание состоит в том, что вызов @Html.DisplayFor(x => x.SomeCollection)
должен автоматически выполнять итерацию по коллекции и вызывать мой шаблон отображения для элементов в SomeCollection
. Однако я вижу исключение:
Элемент модели, переданный в словарь, имеет тип
'System.Collections.Generic.List`1 [Abc.Services.Crm.Dtos.CrmPersonDto + ViewModelDataClass + UserRoleSelected]',
но этот словарь требует типового элемента типа
'Abc.Services.Crm.Dtos.CrmPersonDto + ViewModelDataClass + UserRoleSelected.
Как вы можете видеть, модель, передаваемая моему шаблону отображения, представляет собой целое List
элементов, а не отдельный элемент.
Кроме того, если я вызываю Editor Template, я do , кажется, получаю автоматическую итерацию, только с DisplayFor()
(и Display Template) я получаю исключение. Когда я вручную вызываю @foreach()
для коллекции, мой шаблон отображения вызывается просто отлично.
Вот мой шаблон отображения (пожалуйста, не комментируйте структуру класса VM. Я знаю, что это нужно исправить):
@model CrmPersonDto.ViewModelDataClass.UserRoleSelected
@Html.HiddenFor(x => x.Id)
@Html.CheckBoxFor(x => x.IsTrue)
@Html.LabelFor(x => x.IsTrue, Model.TitleText)<br/>
Теперь вот мое объявление модели в Моем представлении, после чего следует вызов DisplayFor()
:
@model Abc.Services.Crm.Dtos.CrmPersonDto
... more stuff ...
@Html.DisplayFor(m => m.UserRolesSelected, "UserRoleSelected") // causes exception!