我知道我可以拥有这样的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>
我可以将这样的模型用于列表吗?这可能吗?如何设置列表以使用快照列表?
答案 0 :(得分:0)
是的,这当然是可能的。你几乎在语法上正确。使用Razor,您需要使用for
循环来保持对模型的引用,以便Razor知道如何构建模型:
@for(int i = 0; i < Model.Snapshots.Length; i++) {
<tr>
<td>
@Html.DisplayFor(model => model.Snapshots[i].Salutation)
</td>
</tr>
}
答案 1 :(得分:0)
我最终这样做了:
@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)