Razor View Engine: дерево выражений может не содержать динамическую операцию - PullRequest
158 голосов
/ 11 ноября 2010

У меня есть модель, подобная этой:

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 ]

280 голосов
/ 11 ноября 2010

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

@model SampleModel
86 голосов
/ 18 июля 2012

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

@Model SampleModel

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

@model SampleModel
7 голосов
/ 16 сентября 2016

В этой ссылке объясните о @model, см. Выдержку:

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

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

6 голосов
/ 11 ноября 2010

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

4 голосов
/ 16 апреля 2015

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

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

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

@model SampleModel
0 голосов
/ 05 февраля 2015

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

...