此部分代码无效
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem=>item.Registrations.Count())
</td>
并抛出错误
[InvalidOperationException:模板只能用于字段访问,属性访问,单维数组索引或单参数自定义索引器表达式。]
但是下面的这部分代码是一种魅力。
@foreach (var item in Model) {
<tr>
<td>
@item.Registrations.Count()
</td>
有没有人可以解释为什么会这样?
答案 0 :(得分:28)
我认为这是因为你正在使用modelItem => item.Registrations.Count()
。 DisplayFor
想要一个引用模型成员的表达式,而不是成员方法上的函数,因为模型绑定器不知道如何在返回的路上序列化数据(即在表单发布之后)。 / p>
编辑:我奇怪地犯了同样的错误,但原因完全不同,原因是DateTime需要可以为空了
答案 1 :(得分:0)
我刚刚看到在尝试为不适当的数据类型生成控件时出现此错误消息,例如,在尝试使用时(在VB.NET语法中):
@Html.CheckBoxFor(Function(model) model.IsLotTraced)
IsLotTraced
声明为的地方
Public Property IsLotTraced As String
更改为时,错误消失
Public Property IsLotTraced As Boolean
答案 2 :(得分:0)
是的,在表单帖子之后认为这是因为你正在使用modelItem =&gt; item.Registrations.Count()。 DisplayFor是一个表达式,它引用模型的成员,而不是成员方法的函数,因为模型绑定器不知道如何在返回的路径上序列化数据。