2017-04-09 2 views
1

ソースは動的ではないIQueryableは動的Linq Selectによって返されます。私が持っているビューの結果 :ASPNETでIQueryableオブジェクト項目を取得するMVC Razor View

enter image description here

彼らは強く、私がアクセス管理(と正しく表示)することはできません型付けされていないようにcodename_enオブジェクト(私は選択の動的LINQを使用していた理由を注意してください列名は選択から選択まで異なります)。 インデックスで値にアクセスしようとしましたが、item[0], item[1]ですが、Cannot apply indexing with [] to an expression of type 'object'というエラーが表示されます。

+0

、ソースは何ですか?代わりに強く型付けされたリストにするのはなぜですか? – DavidG

+0

モデルクラスやクエリの実行方法など、関連するコードを提供する必要があります。 –

+0

ビューレベルで上記のオブジェクトに簡単にアクセスする方法がない場合は、コードを変更してみてください。それはあなたが言っているのですか? – Luke

答えて

1

あなたはまだ

item.GetType().GetProperty("code").GetValue(item); 

それとも、このオブジェクトが持っているより多くのリフレクションを使用し、すべてのプロパティをレンダリングするようにそれらを知っている場合は、プロパティ名を使用することができます。もちろん

@foreach (var item in Model) 
{ 
    <tr> 
     @{ 
      var type = item.GetType(); 
      var props = type.GetProperties(); 
      foreach (var p in props) 
      { 
       <td> 
        @p.Name 
       </td> 
       <td> 
        @type.GetProperty(p.Name).GetValue(item); 
       </td> 
      } 
     } 
    </tr> 
} 

することができますすべてのプロパティをループして、ちょうどあなたがレンダリングするために好きではないと思われる、IDやその他の個人データのように、いくつかのプロパティをチェックして、除外する。

+0

Mantasありがとうございました。問題を正しく理解し、実際に返信し、問題を解決するという点まで正しく行きました。 5つ星! – Luke

+0

場合によっては、つまらない、あなたが望む結果を得られないことが非常に面倒です。あなたが解決してうれしい;) –

0

あなたがあるとして、あなたのモデルクラスを維持したい場合、あなたは自分のビューで動的なオブジェクトを使用することが:

@foreach (dynamic item in Model.languageTable) 
{ 
    <tr> 
     <td>@item.code</td> 
     <td>@item.name_en</td> 
    </tr> 
} 
関連する問題