3

私は .NET MVC アプリケーションを作成しており、以下を表示したいビューがあります。

カテゴリー

現在のカテゴリのアイテムのリストが続きます

[おそらく]現在のアイテムのサブアイテムのリストが続く

3 つの個別の IEnumerable リスト (カテゴリ、項目、およびサブ項目) を送信するカスタム ViewModel クラスを作成できます。このアプローチの問題点は、ビュー内でデータを適切な順序 (階層) でレンダリングする簡単な方法がないことです。このアプローチでは、3 つのリストがあり、レンダリング中に条件付きロジックを追加する必要があります。これは、アイテムをページの適切な位置に挿入しようとするときに、各アイテム リストが複数回繰り返されることを意味します。

おそらく XML ファイルとして、適切な順序でデータを返したいと思います。ここで適切なアプローチは何ですか?

コントローラー内のデータを連結し、フォーマットされたテキストをビューに渡すことも考えましたが、これはビューがレンダリングを処理するという概念に違反しているようです。

4

3 に答える 3

3

ここでは XML を避けます。適切な階層を渡します。それは合理的だと思われます:

public class ViewModel
{
    Category[] Categories { get; set; }
}

public class Category
{
    Item[] Items { get; set; }
}

public class Item
{
    Item[] SubItems { get; set; }
}

次に、ビュー内にネストされたforeachループを作成できます。

于 2009-05-21T17:29:31.800 に答える
0

おそらく行うべきことは、カテゴリのリストを含むカスタム タイプを用意することです。各アイテムには、サブアイテムが含まれるプロパティがあります。

これは、ナビゲーション プロパティを使用して、Entity Framework で簡単に実現できます。

于 2009-05-21T17:26:59.170 に答える
0

type の items プロパティを使用して、Category Model クラスをセットアップしますIEnumerable<item>

次に、クラスIEnumerable<subItem> subItemsにプロパティを含めます。item

ビューは、これらのアイテムとサブアイテムを非常に簡単に反復処理します。

編集:実際には、サブアイテムがアイテムとまったく同じ場合item、プロパティを持つ単一のクラスが存在する可能性がありIEnumerable<item> subItemsます。これにより、サブアイテムのレベルを無制限にすることもできます。

于 2009-05-21T17:27:00.153 に答える