2012-01-06 13 views
0

MVC3を使用して、IListをモデルとする汎用パーシャルビューを作成し、リストに含まれる最初のオブジェクトのModelMetaDataに基づいてテーブルを作成します。これまでのところ、オブジェクトの各「物」の表示名を取得できますが、オブジェクトの実際のフィールド/データは列挙できません。ここで私が試したものです:「任意の」タイプのオブジェクトからビューデータを取得しますか?

@model System.Collections.IList 

@if (this.Model.IsNullOrEmpty()) 
{ 
    <p>No items found.</p> 
} 
else 
{ 
    <table> 
     <thead> 
    @{ 
     ViewDataDictionary<object> viewData = new ViewDataDictionary<object>(); 
     ModelMetadata metadata = ModelMetadata.FromLambdaExpression<object, object>(m => this.Model[0], viewData); 

     foreach (var property in metadata.Properties) 
     { 
      <th>@property.DisplayName</th> 
     } 
    } 
     </thead> 
     <tbody> 
    @foreach (var item in this.Model) 
    { 
     ViewDataDictionary<object> itemData = new ViewDataDictionary<object>(item); 

      <tr> 
     @foreach (var data in itemData) 
     { 
       <td>@data</td> 
     } 
      </tr> 
    } 
     </tbody> 
    </table> 
} 

行の作品を作成しますが、何もViewDataではありませんループ。思考?

答えて

1

あなたはRouteValueDictionary使用することができます

@foreach (var item in this.Model) 
{ 
    RouteValueDictionary itemData = new RouteValueDictionary(item); 
    <tr> 
    @foreach (var data in itemData) 
    { 
     <td>@data.Value</td> 
    } 
    </tr> 
} 
+0

、おかげで動作します。 –

関連する問題