【问题标题】:Iterating though items of Model in MVC 4遍历 MVC 4 中的模型项
【发布时间】:2013-12-30 09:55:24
【问题描述】:

我想迭代从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; }
}

现在我使用数据库调用来访问模型数据并将其解析到视图中

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>
    }

}

【问题讨论】:

  • 什么是item?你能显示Model的代码吗?
  • 我确信我绝对可以对不赞成票使用一点解释。我相信这个问题是非常有效的,因为我在服务器端几乎找不到任何东西来迭代这些元素。我认为的唯一方法是将对象解析到客户端,其余部分使用 JavaScript。

标签: html asp.net-mvc-4 view model


【解决方案1】:

您不能迭代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&lt;T&gt;,所以你宁愿拥有:

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);

【讨论】:

  • 那么是否可以将项目类型转换为 ICollection?
  • 现在您已经更新了您的问题并提供了更多详细信息,这很清楚。您不能迭代 item,因为 item 不是一个集合。基本上你已经有了模型的集合。我已经更新了我的答案以反映这一点。
  • 是的,谢谢,这就是我的研究让我找到的。如果我可以迭代 item,我希望避免编写大量多余的 HTML 代码
  • 更新了我的问题,为什么我想使用 for 循环来遍历项目。
猜你喜欢
  • 2017-11-01
  • 2021-04-20
  • 1970-01-01
  • 1970-01-01
  • 2018-06-14
  • 2016-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多