0

状況: 製品のリストがあり、それぞれに多数の注文があるとします。モデルに含まれる製品のこのリストを含むインデックス ビューがあります。リストを繰り返し処理し、ページに製品のリストを表示します。プロジェクトごとに 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を使用して部分ビューをロードし、その部分ビューにも顧客リストが必要です。そのデータを何度もページに送信したくありません。

これはできますか?

これはこれを行うための悪い方法ですか?

4

1 に答える 1

0

既存の注文に対して、ユーザーのドロップダウン リストをロードする理由がよくわかりません。つまり、施設に変更を求めているということです 誰が注文したのですか?

ただし、必要に応じて、顧客のドロップダウン リストを顧客のクラスを持つ空のドロップダウンとしてロードし、内部呼び出しを行って顧客の json を取得し、顧客クラスのすべてのインスタンスをロードすることができます。顧客データの json 呼び出しからのデータ。

これにより、顧客データの 1 つのコレクションで 50 件の注文を一覧表示できます。

個人的には、外部キーを使用してモデルとの関係を構築するか、顧客リストに既に追加されているビューモデルを使用する必要があります。ユーザーが行をクリックして完全に表示された場合にのみ、完全な注文の詳細をユーザーに表示することもできます。詳細。

誰かが画面上で気が狂って 50 人すべてをクリックして見たとしても、これらの要求を問題なく処理できるはずです。または 50 人の顧客が製品データベースを一度に検索します。

于 2013-03-30T00:23:03.150 に答える