Шаблон отображения 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);
}