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 исправил его для меня.