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

Если кто-нибудь может дать мне некоторые подсказки о том, как исправить это, я бы очень признателен!

Ответ 1

Мне кажется, что у вас нетипизированное представление. По умолчанию представления Razor в MVC3 RC вводятся как dynamic. Однако лямбды не поддерживают динамических членов. Вы должны сильно ввести свою модель. В верхней части вашего файла просмотра добавьте

@model SampleModel

Ответ 2

Общей ошибкой, которая является причиной этого, является добавление

@Model SampleModel

в верхней части страницы вместо

@Model SampleModel

Ответ 3

В этой ссылке расскажите о @model, см. выдержку:

@model (нижний регистр "m" ) является зарезервированным ключевым словом в представлениях Razor объявите тип модели в верхней части вашего представления. Вы положили пространство имен, например: @model MyNamespace.Models.MyModel

Позже в файле вы можете ссылаться на атрибут, который вы хотите с помощью @Model.Attribute (верхний регистр "M" ).

Ответ 4

Кажется, что ваше представление напечатано dynamic. Установите правильный тип на вид, и вы увидите, что ошибка исчезла.

Ответ 5

Перед использованием (сильно введите html helper в представление) эту строку

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

Вы должны включить вашу модель в свою страницу для создания строгого вида.

@model SampleModel

Ответ 6

Эта ошибка произошла со мной, потому что у меня была @@model вместо @model... скопировать и вставить ошибку в моем случае. Переход на @model исправил его для меня.