状況: 製品のリストがあり、それぞれに多数の注文があるとします。モデルに含まれる製品のこのリストを含むインデックス ビューがあります。リストを繰り返し処理し、ページに製品のリストを表示します。プロジェクトごとに jquery クリック イベントを追加します。クリック イベントは、製品リストの下に各注文の部分ビューを読み込みます。
注文の部分ビューは次のようになります。
@model Order
<p>@Model.orderNum</p>
@Html.DropDownListFor(Order.CustomerName,CustomerNameList)
<input type="submit"/>
インデックス ビューは次のようになります。
@model List<Products>
@foreach(Product p in @Model)
{<button class="product-button">@p.productId</button>}
<div id="orderDiv"/>
次に、製品の注文ごとに次の JavaScript を実行します。
$("#orderDiv").append($("<div></div>).load("MyController/Order/[order ID would go here]"));
これにより、製品の注文 ID ごとに個別の部分ビューで注文が読み込まれます。
問題: 簡単な解決策は、Order モデルに CustomerNameList を含めることです。ただし、そのデータをページに何度もロードしたくありません。このリストをページ全体で使用できるように、ViewBag に入れるか、別の場所に保存する方法はありますか?
注: すべての注文に対して 1 つの部分ビューを使用したくありません (つまり、注文ビュー モデルをリストにして、部分ビューでそれを反復処理します)。各注文を個別に送信できるようにするためです (保存してください) また、ページの他の部分でこの顧客リストを使用する必要があるかもしれません。常備しておきたいと思います。たとえば、新しい注文を示すボタンがあり、これはajaxを使用して部分ビューをロードし、その部分ビューにも顧客リストが必要です。そのデータを何度もページに送信したくありません。
これはできますか?
これはこれを行うための悪い方法ですか?