我在这里尝试做的似乎很常见,但我无法运行此代码。我得到一个编译错误。
我正在尝试绑定到视图模型中的 ienumerable 或 collection。我的语法错了吗?有没有一种新的做事方式我错过了。
@for(var i=0; i < Model.traces.Count(); ++i)
{
@Html.EditorFor(x => x.traces[i].status)
}
我的架构细节在我之前的一篇文章中导致了这个......
我在这里尝试做的似乎很常见,但我无法运行此代码。我得到一个编译错误。
我正在尝试绑定到视图模型中的 ienumerable 或 collection。我的语法错了吗?有没有一种新的做事方式我错过了。
@for(var i=0; i < Model.traces.Count(); ++i)
{
@Html.EditorFor(x => x.traces[i].status)
}
我的架构细节在我之前的一篇文章中导致了这个......
我的语法错了吗?
是的,IEnumerable 或 ICollection 没有 indexer: 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)
}
在这种情况下,框架非常聪明,如果您为模型制作了自己的 EditorTemplate Trace
,您实际上可以只写
@Html.EditorFor(m => m.traces)
MVC 将为列表中的每个项目呈现一个编辑器,并为每个索引提供正确的字段名。