I have a model similar to this:
public class SampleModel
{
public Product Product { get; set; }
}
And in my controller I get an exception trying to print out
@Html.TextBoxFor(p => p.Product.Name)
This is the error:
Exception: An expression tree may not contain a dynamic operation
If anyone can give me some clues on how to fix this I would really appreciate it!
It seems to me that you have an untyped view. By default, Razor views in MVC3 RC are typed as dynamic
. However, lambdas do not support dynamic members. You have to strongly type your model. At the top of your view file add
@model SampleModel
A common error that is the cause of this is when you add
@Model SampleModel
at the top of the page instead of
@model SampleModel
In this link explain about @model, see a excerpt:
@model
(lowercase "m") is a reserved keyword in Razor views to
declare the model type at the top of your view. You have put the
namespace too, e.g.: @model MyNamespace.Models.MyModel
Later in the file, you can reference the attribute you want with
@Model.Attribute
(uppercase "M").
Seems like your view is typed dynamic
. Set the right type on the view and you'll see the error go away.
Before using (strongly type html helper into view) this line
@Html.TextBoxFor(p => p.Product.Name)
You should include your model into you page for making strongly type view.
@model SampleModel
This error happened to me because I had @@model instead of @model... copy & paste error in my case. Changing to @model fixed it for me.