我想迭代从foreach(var item in Model)
返回的项目。与for(int i=0; i <item.length; i++)
类似,然后为模型返回的项目编写单独的html代码。
不幸的是,由于该属性不存在,我似乎无法访问item.length
。有谁知道如何迭代每个模型项目,以便我可以节省写很多不必要的HTML?
所以更多的背景代替了不清楚的问题:
假设我的模型是
public class RegisterViewModel
{
public string Name { get; set; }
public string Email { get; set; }
public string Password { get; set; }
}
现在我使用DB调用来访问模型数据并通过
将其解析到视图RegisterViewModel model= db.RegisterViewModel.Where(data => data.Name == User.Name);
现在我通过view(model)
现在要显示所有学生的数据,我可以使用
model IEnumerable<Project.Models.RegisterViewModel>
@foreach(item in Model) {
@for(int i=0; i<item.Length;i++) { \\this is where I would like to iterate though the item
if(item[i]!= null) // using a for loop would avoid me having to write this if condition multiple times.
<div>@item[i].value</div>
}
}
答案 0 :(得分:0)
您无法对item
进行迭代,因为item
的类型为RegisterViewModel
。这样做是没有意义的。
如果要显示值,可以直接使用它:
@model IEnumerable<Project.Models.RegisterViewModel>
@foreach(item in Model) {
<div>@item.Value</div>
}
另外请记住,控制器中的以下代码行是错误的:
RegisterViewModel model = db.RegisterViewModel.Where(data => data.Name == User.Name);
.Where扩展方法返回IEnumerable<T>
,因此您宁愿拥有:
IEnumerable<RegisterViewModel> model = db.RegisterViewModel.Where(data => data.Name == User.Name);
return View(model);
或者如果您愿意:
var model = db.RegisterViewModel.Where(data => data.Name == User.Name);
return View(model);