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?
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
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.
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):
Where
IsLotTraced
is declared asThe error goes away when it's changed to