为什么Html.DisplayForModel()只显示列表中的一个项目?

时间:2014-03-19 14:19:34

标签: asp.net-mvc asp.net-mvc-5.1

我想使用Html.DisplayModelFor()在视图中显示项目列表。

这是控制器:

public ActionResult Index() {

        var person = new ApplicationUser();
        person.Email = "Greg@gmail.com";
        person.UserName = "Greg";

        var person2 = new ApplicationUser();
        person.Email = "Gary@gmail.com";
        person.UserName = "Gary";

        var list = new List<ApplicationUser>();
        list.Add(person);
        list.Add(person2);

        return View(list);
    }

以下是观点:

@model  IEnumerable<WebApplication32.Models.ApplicationUser>


@Html.DisplayForModel()

这是名为ApplicationUser的DisplayTemplate:

@model WebApplication32.Models.ApplicationUser
<div>
  @Html.DisplayFor(u=> u.UserName)
  @Html.DisplayFor(u=> u.Email)
</div>

结果只显示第一个项目。

如果我将视图更改为:

@model  IEnumerable<WebApplication32.Models.ApplicationUser>

@foreach (var item in Model)
{
    @Html.DisplayFor(x => x)
}

然后显示每个项目。

但第二种观点对我没有意义:在foreach中,似乎没有使用'item'。然而,它正在遍历这些项目。

2 个答案:

答案 0 :(得分:0)

为什么不使用模型本身:

@foreach (var item in Model)
{
    <label>@item.UserName</label>
    <label>@item.Email</label>
}

或者可以使用

@foreach (var item in Model)
{
    @Html.Display(item.UserName)
}

答案 1 :(得分:0)

DisplayFor期望一个表达式,用于标识包含要显示的属性的对象。模型已由HtmlHelper(= @ Html)给出。因此,您不需要使用您的项目变量。

相关问题