【问题标题】:.NET MVC Html helper to display List<model> properties.NET MVC Html 帮助器来显示 List<model> 属性
【发布时间】:2013-11-23 00:32:11
【问题描述】:

我希望在视图中呈现部分视图,由于我使用强类型视图,因此我需要在主视图中包含两个视图模型。

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

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

这是利用它的视图:

@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)

【问题讨论】:

    标签: c# asp.net-mvc


    【解决方案1】:

    是的,PersonViewModel 是一个列表,List&lt;T&gt; 没有名为 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-30
      • 1970-01-01
      • 2015-08-24
      • 2011-04-06
      • 1970-01-01
      相关资源
      最近更新 更多