模板只能用于字段访问,属性访问,单维数组索引或单参数自定义索引器表达式

Zen*_*cki 20 model-view-controller

这部分代码不起作用

@foreach (var item in Model) {
        <tr>
            <td>
            @Html.DisplayFor(modelItem=>item.Registrations.Count())
         </td>
Run Code Online (Sandbox Code Playgroud)

并抛出一个错误

[InvalidOperationException:模板只能用于字段访问,属性访问,单维数组索引或单参数自定义索引器表达式.

但下面的这部分代码是一个魅力.

@foreach (var item in Model) {
    <tr>
        <td>
           @item.Registrations.Count()
        </td>
Run Code Online (Sandbox Code Playgroud)

有没有人可以解释为什么会这样?

Pau*_*oll 30

我认为这是因为你正在使用modelItem => item.Registrations.Count().DisplayFor想要一个引用模型成员的表达式,而不是成员方法上的函数,因为模型绑定器不会知道如何在返回的路上序列化数据(即在表单发布之后).

编辑:我奇怪地有相同的错误,但出于完全不同的原因,结果是DateTime需要可以为空

  • 这是对的.问题是你使用`Count()`方法作为`DisplayFor`的参数,这是不允许的.`DisplayFor`的参数必须是属性或字段. (4认同)