Razor视图引擎:expression式树可能不包含dynamic操作

我有一个类似于这样的模型:

public class SampleModel { public Product Product { get; set; } } 

而在我的控制器,我得到一个例外,试图打印出来

 @Html.TextBoxFor(p => p.Product.Name) 

这是错误的:

 Exception: An expression tree may not contain a dynamic operation 

如果任何人都可以给我一些线索,如何解决这个问题,我会很感激!

在我看来,你有一个无types的观点。 默认情况下,MVC3 RC中的Razor视图被input为dynamic 。 但是,lambda不支持dynamic成员。 你必须强烈地input你的模型。 在视图文件的顶部添加

 @model SampleModel 

导致这种情况的一个常见错误是当你添加

 @Model SampleModel 

在页面的顶部,而不是

 @model SampleModel 

在这个链接解释关于@model,请参阅摘录:

@model (小写“m”)是Razor视图中的保留关键字,用于在视图顶部声明模型types。 你也把名字空间,例如: @model MyNamespace.Models.MyModel

稍后在文件中,可以使用@Model.Attribute (大写字母“M”)引用所需的属性。

看起来像你的看法是键入dynamic 。 在视图上设置正确的types,你会看到错误消失。

在使用之前(强typeshtml助手进入视图)这一行

 @Html.TextBoxFor(p => p.Product.Name) 

你应该把你的模型join到你的页面中来进行强types的查看。

 @model SampleModel 

这个错误发生在我身上,因为我有@@ model而不是@model …在我的情况下复制和粘贴错误。 更改为@model修复了我。