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 に答える