Asp.net mvc 为什么Html.DisplayForModel()只显示列表中的一项?
我想使用Html.DisplayModelFor()在视图中显示项目列表 这是控制器: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
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)
}