0

私は 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 について何か読んでください)。

4

1 に答える 1

0

MVC とは、表示/編集するデータのセットごとに個別のビューを持つことです。

これは、物事が変化したとき (そして変化するとき) に、他のビューやページに影響を与えずにビューやページを変更できるようにするためです。

とはいえ、自分がしていることについて賢くなれないという意味ではありません。

あなたのデータがすべて非常に似ていると言っているのであれば、それらすべてが同じインターフェイスまたは基本型から継承されていることに問題があるでしょうか?

お気に入り:

public class MyObjectClass : IMyObjectClassCommonStuff
{  
}

次に、部分ビューで (異なるページでデータ表示を再利用できるように)、次のようにビューでモデルを使用できます。

@model IList<IMyObjectClassCommonStuff>

次に、インターフェイスから共通フィールドを参照して、ビューを通常どおりに記述できます。

于 2012-09-02T23:04:32.867 に答える