我想使用 ExpandoObject 作为类型为 Razor 视图的视图模型ViewPage<dynamic>
。执行此操作时出现错误
ExpandoObject o = new ExpandoObject();
o.stuff = new { Foo = "bar" };
return View(o);
我能做些什么来完成这项工作?
我想使用 ExpandoObject 作为类型为 Razor 视图的视图模型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 有正确的想法。但是,这仍然是修改您的概念的一种方法。
你必须给出.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的优秀帖子