Шаблон отображения MVC Razor

У меня есть список предметов, которые я передаю в просмотр. Я хотел бы визуализировать каждый элемент, используя шаблон отображения. Тем не менее, что-то не так, поскольку я не могу правильно отобразить поле. Вот мой основной вид (Index.cshtml):

@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>

Страница загружается, но не отображает значения объекта.

2 ответа

Решение
@model IEnumerable<CustomEntity>

@{
    ViewBag.Title = "Index";
}
@Html.DisplayForModel()

а затем убедитесь, что ваш шаблон дисплея хранится в ~/Views/Shared/DisplayTemplates/CustomEntity.cshtml, Обратите внимание, что расположение и название шаблона отображения очень важны. Он должен быть вызван так же, как тип (CustomEntity.cshtml) и должны быть расположены либо в ~/Views/Shared/DisplayTemplates или вы также можете переопределить его в ~/Views/XXX/DisplayTemplates где XXX это контроллер, который визуализировал основной вид.

Данные, которые вы передаете в Html.DisplayFor типа IEnumerable<CustomEntity>, но ваш DisplayTemplate требует CustomEntity, Попробуйте это вместо этого:

@model IEnumerable<CustomEntity>

@{
    ViewBag.Title = "Index";
}

@foreach(var customEntity in Model)
{
    @Html.DisplayFor(m => customEntity);
}
Другие вопросы по тегам