[解決済み] MVC Razor のダイナミックモデルで、'object' に 'PropertyName' の定義がない。
質問
MVC 3 と Razor ビューエンジンを使用しています。 私はこのビューを持っています。
@model dynamic
@{
var products = (List<ListItemBaseModel>)Model.Products;
var threshold = (int)(Model.Threshold ?? 1);
var id = Guid.NewGuid().ToString();
}
このコードを使って、別のビューから呼び出されます。
@Html.Partial("PartialViewName", new { Products = Model, Threshold = 5 })
両方のViewで、デバッグしてModelを見ると、正しいオブジェクトが含まれているように見えます。 コードを実行すると、"var products ="の行でエラーが発生します。
'object' は 'Products' の定義を含んでいません。
なぜこのようなエラーが発生するのか、どなたか教えてください。 繰り返しになりますが、デバッグモードでモデルオブジェクトを見ると、すべて正しく見えます(2つのプロパティ:ProductsとThresholdを持っています)。
どのように解決するのですか?
ビューモデルとして無名クラスのインスタンスを渡していませんか?私はちょうどこれを試してみました(CSHTMLでの動的なビューモデル)。匿名クラスを使用すると、あなたと同じエラーが発生しましたが、名前付きクラスを作成するとうまくいきました。検索してみましたが、どこにもこのドキュメントがありませんでした。
// error
return View(new { Foo = 1, Bar = "test" });
// worked
return View(new TestClass { Foo = 1, Bar = "test" });
EDIT #1です。
によると
デビッド・エボ
によると、動的型付けされたビューに無名型を渡すことはできないそうです。
internal
. CSHTMLビューは別のアセンブリにコンパイルされているため、匿名タイプのプロパティにアクセスすることができません。
EDIT #2です。
David Ebbo は、この明確化のために投稿を編集しました。
追記 (2011/12/22): MVC 3 で dynamic が直接サポートされたので、以下のテクニックはもはや必要ありません。この投稿は、実際、この機能を MVC に統合することにつながったものです!
関連
-
[解決済み] Html.DisplayForの構文は何のためにあるのですか?
-
[解決済み] 年、月、日のパラメーターは、表現できない DateTime Exception を記述します。
-
[解決済み] razor viewエンジンでの@文字のエスケープ
-
[解決済み】ViewBag、ViewData、TempDataについて
-
[解決済み】ASP.NET MVC3 - textareaで@Html.EditorForを使用する。
-
[解決済み] Razor View-MVC3 ASP.NETでWeb.configからキー値にアクセスする。
-
[解決済み] MVC3 Razor。コードブロック内のhtmlを表示する
-
[解決済み] ビュー内の現在のコントローラを取得する
-
[解決済み] razorを使ったDateTimeフォーマットの変換
-
[解決済み] jqueryでAJAX Postを使用して、強型MVC3ビューからモデルを渡す正しい方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ファイルまたはアセンブリ 'System.Web.WebPages.Razor, Version=2.0.0.0' を読み込めませんでした。
-
[解決済み] 年、月、日のパラメーターは、表現できない DateTime Exception を記述します。
-
[解決済み] razor viewエンジンでの@文字のエスケープ
-
[解決済み】MVC 3 web.configのwebpages:Enabledの機能は何ですか?
-
[解決済み] Razor View-MVC3 ASP.NETでWeb.configからキー値にアクセスする。
-
[解決済み] Razor HtmlHelper Extensions (またはビューの他の名前空間) が見つかりません。
-
[解決済み] Razor の Dynamic Anonymous 型で RuntimeBinderException が発生する。
-
[解決済み] Razor のページに @using 宣言の代わりに余分な名前空間を追加する方法は?
-
[解決済み] Razorコメント文法
-
[解決済み] razorを使ったDateTimeフォーマットの変換