У меня есть список элементов, которые я передаю в представление. Я хотел бы отображать каждый элемент с помощью шаблона отображения. Однако, что-то не так, потому что я не получаю правильно обработанное поле. Вот мой главный вид (Index.cshtml):MVC Razor display template
@model IEnumerable<CustomEntity>
@{
ViewBag.Title = "Index";
}
@Html.DisplayFor(m=>m)
Вот мой шаблон отображения:
@model CustomEntity
<div>
@Html.LabelFor(m=>m.Name):
<strong>@Model.Name</strong>
@Html.LabelFor(m=>m.Icon):
<strong>@Model.Icon</strong>
@Html.LabelFor(m=>m.TypeName):
<strong>@Model.TypeName</strong>
</div>
страница загружается, но не отображает значения объекта.
Не будет ли поиск DisplayTemplate с использованием 'IEnumerable' как модели вместо 'CustomEntity'? –
Спасибо Дарин! Мне не было имени для моего шаблона отображения. Он назывался Entity вместо CustomEntity. Как только я сменил имя, он работает. Можете ли вы сказать мне разницу между @ Html.DisplayForModel() и @ Html.DisplayFor (m => m)? – laconicdev
@ RédaMattar, нет, когда вы передаете 'IEnumerable' как свойство шаблона отображения или редактора, он будет искать шаблон с именем 'TModel.cshtml', и он автоматически вызовет его для каждого элемента этой коллекции, чтобы вы не нужно писать какие-либо петель 'foreach' в вашем коде. Все это работает по соглашению. –