Механизм просмотра Razor: дерево выражений может не содержать динамической операции
у меня есть модель похожая на эту:
public class SampleModel
{
public Product Product { get; set; }
}
и в моем контроллере я получаю исключение, пытаюсь распечатать
@Html.TextBoxFor(p => p.Product.Name)
Это ошибка:
Exception: An expression tree may not contain a dynamic operation
Если кто-то может дать мне некоторые подсказки, как это исправить, я был бы очень признателен!
6 ответов
мне кажется, что у вас нетипизированный вид. По умолчанию представления Razor в MVC3 RC набираются как dynamic
. Однако лямбда-выражения не поддерживают динамические элементы. Вы должны сильно печатать свою модель. В верхней части файла просмотра добавьте
@model SampleModel
распространенная ошибка, которая является причиной этого, когда вы добавляете
@Model SampleModel
в верхней части страницы вместо
@model SampleModel
В этой ссылке объясните о @model, см. выдержку:
@model
(нижний регистр "m") является зарезервированным ключевым словом в представлениях Razor для объявите тип модели в верхней части представления. Вы положили пространство имен тоже, например:@model MyNamespace.Models.MyModel
позже в файле вы можете ссылаться на атрибут, с которым хотите
@Model.Attribute
(верхний регистр "M").
Кажется, что ваш вид набран dynamic
. Установите правильный тип в представлении, и вы увидите, что ошибка исчезнет.
перед использованием (сильно введите HTML helper в поле зрения) эта строка
@Html.TextBoxFor(p => p.Product.Name)
вы должны включить свою модель на свою страницу для создания строго вида типа.
@model SampleModel
эта ошибка произошла со мной, потому что у меня была @@model вместо @model... ошибка копирования и вставки в моем случае. Изменение на @model исправило это для меня.