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

标签 c# asp.net-mvc

我希望在一个 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/

相关文章:

asp.net-mvc - Ninject - 跨程序集的依赖注入(inject)

asp.net-mvc - ASP.net MVC OutputCacheLocation.Server 如何工作?

c# - 使用 Mathnet 数字库进行 Svd 重组似乎是错误的

c# - DBMetal 为 sqlite_sequence 生成无效类

c# - ASP.NET MVC - 模型的 WCF 类

找不到 ASP.NET MVC 方法 : 'System.Version System.Web.HttpRuntime.get_IISVersion()'

c# - ASP.net MVC - 每个 View 或每个操作一个 ViewModel?

c# - 将 DateTime 发送到默认序列化的 WCF 服务

c# - 如何获取外键引用的表

c# - Html Agility Pack - 解析 <li>