Razor View Engine: 表达式树可能不包含动态操作

我有一个类似的模型:

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

在我的控制器中,我得到一个试图打印出来的异常

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

这就是错误所在:

Exception: An expression tree may not contain a dynamic operation

如果有人能给我一些如何解决这个问题的线索,我将非常感激!

126843 次浏览

在我看来,你有一个非类型化的观点。默认情况下,MVC3RC 中的 Razor 视图类型为 dynamic。但是,lambdas 不支持动态成员。你必须强类型你的模型。在视图文件的顶部添加

@model SampleModel

看起来你的视图是 dynamic型的。在视图上设置正确的类型,您将看到错误消失。

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

@Model SampleModel

在页面的顶部而不是

@model SampleModel

这个错误发生在我身上是因为我有@@ model 而不是@model... 在我的例子中复制粘贴错误。改成@型号为我修好了。

在使用(在 view 中强烈键入 html 助手)这一行之前

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

您应该在页面中包含模型,以便创建强类型视图。

@model SampleModel

在这个 链接解释关于@model 的内容中,请看一段摘录:

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

在该文件的稍后部分,您可以引用所需的属性 @Model.Attribute(大写“ M”)。

在 vb.net 上,你必须写@ModelType。