Zenon Iwanicki
Zenon Iwanicki

Reputation: 411

Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions

This part of code is not working

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

and throws an error

[InvalidOperationException: Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.]

But this part of code below is working as a charm.

@foreach (var item in Model) {
    <tr>
        <td>
           @item.Registrations.Count()
        </td>

Is there anybody who can explain why is so?

Upvotes: 20

Views: 27805

Answers (3)

Paul Carroll
Paul Carroll

Reputation: 1887

I'd think it's because you're using modelItem => item.Registrations.Count(). DisplayFor wants an expression that refers to a member of your model, not a function on a member's method as the model binder wouldn't know how to serialize the data on the way back (i.e. after a form post).

EDIT: I'd weirdly had the same error but for a completely different reason which turned out to be that the DateTime needed to be nullable

Upvotes: 30

ravula sandeep
ravula sandeep

Reputation: 511

Yeah, After a form post think it's because you're using modelItem=>item.Registrations.Count(). DisplayFor is an expression that refers to a member of your model, not a function on a member's method as the model binder wouldn't know how to serialise the data on the way back.

Upvotes: 0

BlueMonkMN
BlueMonkMN

Reputation: 25601

I just saw this error message occur when attempting to generate a control for an inappropriate data type, for example, when trying to use (in VB.NET syntax):

@Html.CheckBoxFor(Function(model) model.IsLotTraced)

Where IsLotTraced is declared as

Public Property IsLotTraced As String

The error goes away when it's changed to

Public Property IsLotTraced As Boolean

Upvotes: 0

Related Questions