1

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

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

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

我的架构细节在我之前的一篇文章中导致了这个......

使用 Entity Framework 在 POST 上出错 - 值不能为空。参数名称:来源

4

2 回答 2

3

我的语法错了吗?

是的,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)
}
于 2013-10-18T12:47:32.783 回答
0

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

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

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

于 2013-10-18T12:50:21.863 回答