J'ai un modèle semblable à ceci:
public class SampleModel
{
public Product Product { get; set; }
}
Et dans mon contrôleur, une exception essaie d’imprimer
@Html.TextBoxFor(p => p.Product.Name)
C'est l'erreur:
Exception: An expression tree may not contain a dynamic operation
Si quelqu'un pouvait me donner des indices sur la façon de résoudre ce problème, je l'apprécierais vraiment!
Il me semble que vous avez une vue non typée. Par défaut, les vues Razor dans MVC3 RC sont saisies sous la forme dynamic
. Cependant, les lambdas ne supportent pas les membres dynamiques. Vous devez taper fortement votre modèle. En haut de votre fichier de vue, ajoutez
@model SampleModel
Une erreur courante qui en est la cause est lorsque vous ajoutez
@Model SampleModel
en haut de la page au lieu de
@model SampleModel
Dans ce lien expliquez à propos de @model, voyez un extrait:
@model
(minuscule "m") est un mot clé réservé dans les vues Razor pour déclarer le type de modèle en haut de votre vue. Vous avez également mis l'espace de noms, par exemple:@model MyNamespace.Models.MyModel
Plus tard dans le fichier, vous pouvez référencer l'attribut souhaité avec
@Model.Attribute
(majuscule "M").
On dirait que votre vue est saisie dynamic
. Définissez le bon type sur la vue et vous verrez l'erreur disparaître.
Avant d’utiliser (taper fortement helper HTML dans la vue), cette ligne
@Html.TextBoxFor(p => p.Product.Name)
Vous devez inclure votre modèle dans votre page pour créer une vue fortement typée.
@model SampleModel
Cette erreur m'est arrivée parce que j'avais @@ model au lieu de @model ... erreur de copier/coller dans mon cas. Passer à @model a résolu le problème pour moi.