Cette partie du code ne fonctionne pas
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem=>item.Registrations.Count())
</td>
et jette une erreur
[InvalidOperationException: les modèles ne peuvent être utilisés qu'avec les expressions d'accès aux champs, d'accès aux propriétés, aux tableaux à une dimension ou aux indexeurs personnalisés à un paramètre.]
Mais cette partie du code ci-dessous fonctionne comme un charme.
@foreach (var item in Model) {
<tr>
<td>
@item.Registrations.Count()
</td>
Y a-t-il quelqu'un qui peut expliquer pourquoi?
Je pense que c'est parce que vous utilisez modelItem => item.Registrations.Count()
. DisplayFor
souhaite une expression faisant référence à un membre de votre modèle, et non à une fonction de la méthode d'un membre, car le classeur de modèle ne saurait pas comment sérialiser les données au retour (c'est-à-dire après la publication d'un formulaire).
EDIT: J'avais bizarrement eu la même erreur mais pour une raison complètement différente qui s'est avérée être que le DateTime devait être nullable
Ouais, après un post, pensez que c'est parce que vous utilisez modelItem => item.Registrations.Count (). DisplayFor est une expression qui fait référence à un membre de votre modèle et non à une fonction de la méthode d'un membre, car le classeur de modèle ne saurait pas comment sérialiser les données au retour.
Je viens de voir ce message d'erreur se produire lors de la tentative de génération d'un contrôle pour un type de données inapproprié, par exemple lors d'une tentative d'utilisation (dans la syntaxe VB.NET):
@Html.CheckBoxFor(Function(model) model.IsLotTraced)
Où IsLotTraced
est déclaré comme
Public Property IsLotTraced As String
L'erreur disparaît quand elle devient
Public Property IsLotTraced As Boolean