我想使用ExpandoObject作为ViewPage<dynamic>类型的Razor视图的视图模型。当我这样做的时候,我得到一个错误
ExpandoObject o = new ExpandoObject();
o.stuff = new { Foo = "bar" };
return View(o);我能做些什么来让它工作呢?
发布于 2011-06-24 23:12:12
你可以使用这个问题中提到的扩展方法来实现:
Dynamic Anonymous type in Razor causes RuntimeBinderException
因此,您的控制器代码将如下所示:
dynamic o = new ExpandoObject();
o.Stuff = new { Foo = "Bar" }.ToExpando();
return View(o);然后是你的观点:
@model dynamic
@Model.Stuff.Bar发布于 2011-09-16 00:12:15
使用开源的Dynamitey (在nuget中),你可以用一个非常简单的clean syntax来绘制ExpandoObjects的图形;
dynamic Expando = Build<ExpandoObject>.NewObject;
var o = Expando (
stuff: Expando(foo:"bar")
);
return View(o);发布于 2011-06-24 23:07:07
我承认,“奶奶的想法是对的。”然而,这仍然是修改概念的一种方法。
编辑
你必须给.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; }
}https://stackoverflow.com/questions/6469224
复制相似问题