Razor View Engine : An expression tree may not contain a dynamic operation
asp.net Mvc.Net 4.0Razorasp.net Mvc Problem Overview
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!
asp.net Mvc Solutions
Solution 1 - asp.net Mvc
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
Solution 2 - asp.net Mvc
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
Solution 3 - asp.net Mvc
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").
Solution 4 - asp.net Mvc
Seems like your view is typed dynamic
. Set the right type on the view and you'll see the error go away.
Solution 5 - asp.net Mvc
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
Solution 6 - asp.net Mvc
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.
Solution 7 - asp.net Mvc
On vb.net you must write @ModelType.