Asp.net mvc 为什么Html.DisplayForModel()只显示列表中的一项?

Asp.net mvc 为什么Html.DisplayForModel()只显示列表中的一项?,asp.net-mvc,asp.net-mvc-5.1,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(); pe

我想使用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);
    }
public ActionResult Index(){
var person=new ApplicationUser();
person.Email=”Greg@gmail.com";
person.UserName=“Greg”;
var person2=新应用程序用户();
person.Email=”Gary@gmail.com";
person.UserName=“Gary”;
var list=新列表();
列表。添加(人);
列表。添加(人员2);
返回视图(列表);
}
以下是视图:

@model  IEnumerable<WebApplication32.Models.ApplicationUser>


@Html.DisplayForModel()
@model IEnumerable
@Html.DisplayForModel()
以下是名为ApplicationUser的显示模板:

@model WebApplication32.Models.ApplicationUser
<div>
  @Html.DisplayFor(u=> u.UserName)
  @Html.DisplayFor(u=> u.Email)
</div>
@model WebApplication32.Models.ApplicationUser
@DisplayFor(u=>u.UserName)
@DisplayFor(u=>u.Email)
结果仅显示第一个项目

如果我将视图更改为:

@model  IEnumerable<WebApplication32.Models.ApplicationUser>

@foreach (var item in Model)
{
    @Html.DisplayFor(x => x)
}
@model IEnumerable
@foreach(模型中的var项目)
{
@DisplayFor(x=>x)
}
然后显示每个项目


但第二种观点对我来说毫无意义:在foreach中,似乎没有使用“item”。但它却在项目之间循环。

为什么不使用模型本身:

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

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

因为实际页面有许多不同的集合,我希望能够为每个集合使用DisplayTemplate/EditTemplate。这可能是重复的:顺便说一下,该方法的名称是
DisplayForModel()
,而不是
DisplayModelFor()
@foreach (var item in Model)
{
    @Html.Display(item.UserName)
}