模型绑定到列表编辑器对于编译错误



我在这里尝试做的事情似乎很常见,但我无法运行此代码。我收到编译错误。

我正在尝试绑定到视图模型中的 ienumerable 或 icollection。我的语法有误吗?有没有我错过的新做事方式。

@for(var i=0; i < Model.traces.Count(); ++i)
{
    @Html.EditorFor(x => x.traces[i].status)
}

我的架构细节在我的上一篇文章中,导致这个......

使用实体框架在 POST 上出错 - 值不能为空。参数名称:源

我的语法有误吗?

是的,IEnumerable 或 ICollection 没有索引器:x.traces[i]

如果您使用其元素可以通过索引(如 IList<T>T[])访问的集合会更好,具体取决于视图模型的具体类型。

然后,您将能够执行此操作:

@model IList<MyViewModel>
...
@for (var i = 0; i < Model.traces.Count; i++)
{
    @Html.EditorFor(x => x.traces[i].status)
}

在这种情况下,框架非常聪明,如果你为模型Trace制作了自己的编辑器模板,你实际上可以只写

@Html.EditorFor(m => m.traces)

MVC 将为列表中的每个项目呈现一个编辑器,并为每个索引提供正确的字段名称。

相关内容

  • 没有找到相关文章

最新更新