タイプ の Razor ビューのビューモデルとして ExpandoObject を使用したいと考えていますViewPage<dynamic>
。これを行うとエラーが発生します
ExpandoObject o = new ExpandoObject();
o.stuff = new { Foo = "bar" };
return View(o);
これを機能させるにはどうすればよいですか?
タイプ の Razor ビューのビューモデルとして ExpandoObject を使用したいと考えていますViewPage<dynamic>
。これを行うとエラーが発生します
ExpandoObject o = new ExpandoObject();
o.stuff = new { Foo = "bar" };
return View(o);
これを機能させるにはどうすればよいですか?
この質問に記載されている拡張メソッドを使用して実行できます。
Razor の動的匿名型が原因で RuntimeBinderException が発生する
したがって、コントローラーのコードは次のようになります。
dynamic o = new ExpandoObject();
o.Stuff = new { Foo = "Bar" }.ToExpando();
return View(o);
そして、あなたの見解:
@model dynamic
@Model.Stuff.Bar
@gram は正しい考えを持っています。ただし、これはまだコンセプトを変更する 1 つの方法です。
扱っているオブジェクトのタイプを知る必要があるため.stuff
、タイプを指定する必要があります。dynamic
.stuff
匿名型に設定すると内部になるため、@model dynamic
ここでは役に立ちません
ExpandoObject o = new ExpandoObject();
o.stuff = MyTypedObject() { Foo = "bar" };
return View(o);
MyTypedObject
そしてもちろん、
public class MyTypedObject
{
public string Foo { get; set; }
}
タイプを次のように設定してみてくださいdynamic
dynamic o = new ExpandoObject();
o.stuff = new { Foo = "bar" };
return View(o);
ExpandoObject に関するこの優れた投稿をご覧ください