Razor View Engine:式ツリーに動的操作が含まれていない可能性があります


173

私はこれに似たモデルを持っています:

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
これはMVC3 RCにありますか?また、製品の外観を教えてください。MVC3 RCでそれを再現できませんでした
bmancini 2010

回答:


297

型なしの見解を持っているようです。デフォルトでは、MVC3 RCのRazorビューはと入力されdynamicます。ただし、ラムダは動的メンバーをサポートしていません。モデルを強く入力する必要があります。ビューファイルの上部に追加します

@model SampleModel

11
それは私のためにそれをした大文字のmでした
whossname

もしあなたがモデルを持っているとしたら?
djack109

92

これの原因である一般的なエラーは、追加するときです

@Model SampleModel

の代わりにページの上部に

@model SampleModel

5
この回答を追加していただきありがとうございます。何年ものプログラミングの後、大文字と小文字の区別を忘れることができるのは驚くべきことです。
brentlightsey 2013年

1
「@Model」の代わりに「model」を使用した場合にも発生する可能性があります...ビルド時に実行時に失敗します。
Dave Remy

8

このリンクで @modelについて説明し、抜粋を参照してください:

@model(小文字の "m")は、ビューの上部でモデルタイプを宣言するためのRazorビューの予約キーワードです。あなたも名前空間を入れました、例えば:@model MyNamespace.Models.MyModel

ファイルの後半で、必要な属性を参照できます @Model.Attribute(大文字の「M」)。


2
これが私の問題でした。注意深く見ていなければ、Visual Studioは入力しているものを大文字の「M」に変換する傾向があります。それは本当にイライラします。
RobbieE 2017年

7

ビューが入力されたようdynamicです。ビューに適切なタイプを設定すると、エラーが解消されます。


5

使用する前に(このビューにhtmlヘルパーを強く入力)この行

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

強い型ビューを作成するには、モデルをページに含める必要があります。

@model SampleModel

1

私の場合、@ model ...ではなく@@ model ...コピー&ペーストエラーがあったため、このエラーが発生しました。@modelに変更すると修正されました。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.