我有一个类似于这样的模型:
public class SampleModel
{
public Product Product { get; set; }
}
在我的控制器中,当我尝试打印时出现异常
@Html.TextBoxFor(p => p.Product.Name)
以下是错误信息:
Exception: An expression tree may not contain a dynamic operation
如果有人能给我一些解决方法,那将不胜感激!
我有一个类似于这样的模型:
public class SampleModel
{
public Product Product { get; set; }
}
在我的控制器中,当我尝试打印时出现异常
@Html.TextBoxFor(p => p.Product.Name)
以下是错误信息:
Exception: An expression tree may not contain a dynamic operation
如果有人能给我一些解决方法,那将不胜感激!
在我看来,您使用了一个未经类型化的视图。在MVC3 RC中,默认情况下,Razor视图被视为 dynamic
类型。但是,lambda表达式不支持动态成员。您需要为模型强制指定类型。在您的视图文件顶部添加以下代码:
@model SampleModel
@Model SampleModel
在页面顶部而不是
@model SampleModel
@model
(小写的“m”)是Razor视图中的保留关键字,用于在视图顶部声明模型类型。您也可以加上命名空间,例如:@model MyNamespace.Models.MyModel
稍后在文件中,您可以使用
@Model.Attribute
(大写的“M”)引用要使用的属性。
在使用 (将html helper强类型化到视图中) 这行代码之前
@Html.TextBoxFor(p => p.Product.Name)
为了使视图具有强类型,您应该将模型包含在页面中。
@model SampleModel
看起来你的视图类型是 dynamic
。将视图设置为正确的类型,你就会发现错误消失了。
这个错误发生在我身上,因为我使用了@@model而不是@model... 在我的情况下是复制粘贴错误。将其更改为@model后问题得到解决。