私は MVC (3) を初めて使用し、さまざまなデータ項目のリストを使用するアプリを構築しています。
それぞれのビューを作成できますが、それぞれが似ている (データの列を持つ HTML テーブル) ため、共通のビューを使用する方が理にかなっていると考えました。
コントローラはすべて、DAL から Linq を使用してエントリを返します。
ダル
public List <MyObject> getAllEntriesOfSomeType()
{
var myobjects = from r in db.something
where r.status ==1
select r;
return myobjects.ToList();
}
コントローラ
MyObjectClass o = new MyObjectClass();
return View(o.getAllEntriesOfSomeType());
見る
このオブジェクトに関連付けられていないビューでは、列名とデータを動的に表示したいと思います。
<thead>
<tr>
@int cols = 0;
@foreach(c in Model.Columns)
{
<th>
@cols+=1;
@c.DisplayName
</th>
}
</tr>
</thead>
<tbody>
@foreach(m in Model)
{
<tr>
@(int i = 1;i<=cols;i++)
{
<td>
@m[i].Value
</td>
}
</tr>
}
</tbody>
...
上記を達成する(簡単な!)方法はありますか。モデルを DataTable に変換することを考えましたが、簡単な方法はないようでした (ObjectShredder について何か読んでください)。