ExpandoObject,匿名类型和Razor

ken*_*ner 4 dynamic anonymous-types expandoobject razor asp.net-mvc-3

我想使用ExpandoObject作为类型的Razor视图的viewmodel ViewPage<dynamic>.我这样做时出错了

ExpandoObject o = new ExpandoObject();
o.stuff = new { Foo = "bar" };
return View(o);
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能使这项工作?

gra*_*ram 14

您可以使用此问题中提到的扩展方法来执行此操作:

Razor中的动态匿名类型导致RuntimeBinderException

所以你的控制器代码看起来像:

dynamic o = new ExpandoObject();
o.Stuff = new { Foo = "Bar" }.ToExpando();

return View(o);
Run Code Online (Sandbox Code Playgroud)

然后你的观点:

@model dynamic

@Model.Stuff.Bar
Run Code Online (Sandbox Code Playgroud)

  • 毕竟这最终起作用了.它在我第一次尝试时没有工作b/c我实际上做的事情就像`ctx.Foo.Select(x => new {Foo ="bar"} .ToExpandoObject()).SingleOrDefault()`当我应该做`ctx.Foo.Select(x => new {Foo ="bar"}).SingleOrDefault().ToExpandoObject()` (2认同)