我想使用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'。然而,它正在遍历这些项目。
答案 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)给出。因此,您不需要使用您的项目变量。