我有一个类似的模型:
public class SampleModel
{
public Product Product { get; set; }
}
在我的控制器中,我尝试打印
时出现异常@Html.TextBoxFor(p => p.Product.Name)
这是错误:
Exception: An expression tree may not contain a dynamic operation
如果有人能给我一些如何解决这个问题的线索,我会非常感激!
答案 0 :(得分:276)
在我看来,你有一个无类型的观点。默认情况下,MVC3 RC中的Razor视图键入为dynamic
。但是,lambdas不支持动态成员。您必须强力键入您的模型。在视图文件的顶部添加
@model SampleModel
答案 1 :(得分:85)
造成这种情况的常见错误是当您添加
时@Model SampleModel
位于页面顶部而不是
@model SampleModel
答案 2 :(得分:7)
在这个关于@model的link解释中,请参阅摘录:
@model
(小写“m”)是Razor视图中的保留关键字 在视图顶部声明模型类型。你已经把 命名空间,例如:@model MyNamespace.Models.MyModel
稍后在文件中,您可以引用所需的属性
@Model.Attribute
(大写“M”)。
答案 3 :(得分:6)
似乎您的视图已键入dynamic
。在视图上设置正确的类型,您将看到错误消失。
答案 4 :(得分:4)
在使用(强类型html助手进入视图)之前这一行
@Html.TextBoxFor(p => p.Product.Name)
您应该将模型包含在您的页面中,以便进行强类型视图。
@model SampleModel
答案 5 :(得分:0)
这个错误发生在我身上,因为我有@@ model而不是@model ... copy&在我的情况下粘贴错误。改为@model为我修好了。
答案 6 :(得分:0)
在vb.net上,您必须编写@ModelType。