我可以有一个MVP列表使用一个模型内的列表
本文关键字:列表 一个 模型 MVP 有一个 我可以 | 更新日期: 2023-09-27 18:16:56
我知道我可以有一个这样的MVP名单:
@model IEnumerable<PublicationSystem.ViewModels.ProfileSnapshotViewModel>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Salutation)
</th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Salutation)
</td>
</tr>
}
</table>
但是我想使用这样的模型:
public class ProfileSnapshotListViewModel
{
public Guid ResourceAssignedToId { get; set; }
public IEnumerable<PublicationSystem.ViewModels.ProfileSnapshotViewModel> Snapshots { get; set; }
}
我希望我的视图是这样结束的:
@model PublicationSystem.ViewModels.ProfileSnapshotListViewModel
<div id="pnlResourceSnapshotEdit">
@{ Html.RenderAction("_ResourceSnapshotEdit", "Profiles", new { id = Model.ResourceAssignedToId }); }
</div>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Snapshots.Salutation)
</th>
</tr>
@foreach (var item in Model.Snapshots) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Salutation)
</td>
</tr>
}
</table>
我可以为列表使用这样的模型吗?这可能吗?如何设置列表以使用快照列表?
是的,这当然是可能的。你几乎语法正确了。对于Razor,您需要使用for
循环,以保持对模型的引用,以便Razor知道如何构建您的模型:
@for(int i = 0; i < Model.Snapshots.Length; i++) {
<tr>
<td>
@Html.DisplayFor(model => model.Snapshots[i].Salutation)
</td>
</tr>
}
最后我这样做了:
@model PublicationSystem.ViewModels.ProfileSnapshotListViewModel
<div id="pnlResourceSnapshotEdit">
@{ Html.RenderAction("_ResourceSnapshotEdit", "Profiles", new { id = Model.ResourceAssignedToId }); }
</div>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Snapshots.FirstOrDefault().Salutation)
</th>
</tr>
@foreach (var item in Model.Snapshots) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Salutation)
</td>
</tr>
}
</table>
这给了我想要的标题和项。
我要找的是:
@Html.DisplayNameFor(model => model.Snapshots.FirstOrDefault().Salutation)