0

我试图将一组匿名类型传递给 Razor 视图引擎,这些匿名类型本身就是一组类型。

我正在使用以下扩展将动态对象传递给视图。

 public static ExpandoObject ToExpando(this object anonymousObject)
    {
        IDictionary<string, object> anonymousDictionary = new RouteValueDictionary(anonymousObject);
        IDictionary<string, object> expando = new ExpandoObject();
        foreach (var item in anonymousDictionary)
            expando.Add(item);
        return (ExpandoObject)expando;
    }

它适用于简单的匿名对象,例如:

mylinqstatement.Select(x => new { foo = x.f, bar = x.b }.ToExpando());

但是,我未能成功传递更复杂的类型,例如:

mylinqstatement.GroupBy(y => y.foo).Select(x => 
     new { foo = x.key, bar = x.Select(y => y.b) }.ToExpando());

我已经多次尝试重写梯形图语句(我展示了最简单的),但我想要的属性(yb 的值)在视图中永远无法访问。

任何帮助,将不胜感激。

4

1 回答 1

0

我回答了我自己的问题。

mylinqstatement.GroupBy(y => y.foo).Select(x => new { foo = x.key, 
 bar = x.Select(y => new { someProperty = y.b) }.ToExpando())}.ToExpando());

在视图中...

@foreach (var item in Model)
{ 
 @item.foo

 foreach (var barItem in item.bar)  //<--- notice it's not simply 'in item'. 
{
 @barItem .someProperty 
}

}

希望这可以帮助某人避免不必要的头痛。

于 2012-07-09T22:37:52.050 回答