gpt4 book ai didi

c# - 用于显示 List 属性的 .NET MVC Html 助手

转载 作者:行者123 更新时间:2023-12-04 02:39:46 24 4
gpt4 key购买 nike

我希望在一个 View 中呈现一个局部 View ,因为我使用强类型 View ,所以我需要在主视图中包含两个 View 模型。

这是我的 View 模型,其中包含部分 View 使用的模型和主视图使用的模型:

public class PersonIndexViewModel
{
public PersonLookupViewModel PersonLookupViewModel { get; set; }
public List<PersonViewModel> PersonViewModel { get; set; }
}

下面是利用它的 View :

@model ViewModels.PersonIndexViewModel

@{
ViewBag.Title = "Registered People";
}

<h2>@ViewBag.Title</h2>

<p>
@Html.ActionLink("Create New", "Create")
</p>

@Html.Partial("_LookupPartial", Model.PersonLookupViewModel);

<table>
<tr>
<th>
@Html.DisplayNameFor(m => m.PersonViewModel.personName)
</th>
<th>
@Html.DisplayNameFor(m => m.PersonViewModel.dob)
</th>
<th>
@Html.DisplayNameFor(m => m.PersonViewModel.address)
</th>
<th>
@Html.DisplayNameFor(m => m.PersonViewModel.internalNo)
</th>
</tr>

@foreach (var item in Model.PersonViewModel) {
<tr>
<td>
@Html.DisplayFor(i => i.PersonViewModel.personName)
</td>
<td>
@Html.DisplayFor(i => i.PersonViewModel.dob)
</td>
<td>
@Html.DisplayFor(i => i.PersonViewModel.address)
</td>
<td>
@Html.DisplayFor(i => i.PersonViewModel.internalNo)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.id }) |
@Html.ActionLink("Delete", "Delete", new { id=item.id })
</td>
</tr>
}

</table>

所以我的问题是,因为 PersonViewModel 是一个列表,所以上面的表达式似乎无法访问它们的属性。例如下面的 personName 无法识别。

@Html.DisplayNameFor(m => m.PersonViewModel.personName)

最佳答案

是的,PersonViewModel是一个列表, List<T> 没有名为 personName 的属性.

您想要访问列表中某个项目的属性,因此:

@Html.DisplayNameFor(m => m.PersonViewModel.personName)

成为

@Html.DisplayNameFor(m => m.PersonViewModel[0].personName)

(假设您始终在列表中至少有一项)

我怀疑您也必须更改循环中的表达式...

@Html.DisplayFor(i => i.PersonViewModel.personName)

成为

@Html.DisplayFor(i => i.personName)

关于c# - 用于显示 List<model> 属性的 .NET MVC Html 助手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20148849/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com