1

この質問は以前にも何度も聞かれたことは知っていますが、私のシナリオは少し違うと思います。それを処理する最善の方法を探しているだけです。

3 つの部分ビューと 3 つの対応するビューモデルがあります。カテゴリ、部門、および製品用に 1 つ。

カテゴリにはディビジョンのコレクションが含まれ、ディビジョンには製品のコレクションが含まれます。

私のメイン ビューでは、3 つの部分ビューで RenderPartial を呼び出します...

@{ Html.RenderPartial("_Categories", Model.Categories); }
@{ Html.RenderPartial("_Divisions", Model.Divisions); }
@{ Html.RenderPartial("_Products", Model.Products); }

jQuery を使用して、選択したカテゴリ、部門、および製品の変更に応じて、それぞれの部分ビューを更新します。

ここで問題が発生します... カテゴリを選択すると、そのカテゴリの部門で部門セクションを更新します..しかし、私がやりたいことは、最初の部門に基づいて製品セクションを更新することです最初は部門が選択されていないため、コレクション。

これを処理するためにいくつかの異なるオプションを思いついたのですが、何が最善のアプローチなのかわかりません...

  1. 最初の AJAX 呼び出しがディビジョンのコレクションで返されるまで待ってから、2 回目の AJAX 呼び出しを実行して製品を更新することもできます。ただし、明らかにパフォーマンスを考慮して、これを実行したくありません。

  2. 部分ビューを構成して、Category 部分ビューに Division 部分ビューが含まれ、Division 部分ビューに Products 部分ビューが含まれるようにすることができます。このようにして、カテゴリが変更されたときに、1 回の AJAX 呼び出しで製品を更新できます。これに関する問題は、部門と製品の部分ビューの間で定義されるすべての静的 HTML が、すべての AJAX 呼び出しで渡されることです。

  3. AJAX 呼び出しを変更して、すべてのモデルを含む JSON オブジェクトを返し、クライアント側のビューを更新することもできます。ただし、サーバーでのビューのレンダリング方法を変更できるという柔軟性は、束を連結するのではなく非常に気に入っています。クライアント側のhtmlの。

1 回の AJAX 呼び出しで複数の部分ビューを返すことができれば、問題は解決します。ただし、アーキテクチャ上間違っていることがあれば、喜んで変更します。何かアドバイス?ありがとう!!

4

1 に答える 1

1

4 番目のオプションは、ContentType が text/javascript に設定された Razor ビューを応答として返すことです。Razor は部分ビューをレンダリングしますが、ブラウザーは JavaScript を実行して DOM を更新します。

応答を実行できるように、ajax 呼び出しが正しく行われていることを確認する必要があります。

$("#Categories").html('@Html.RenderPartial("_Categories", Model.Categories)')
$("#Divisions").html('@Html.RenderPartial("_Divisions", Model.Divisions)')
$("#Products").html('@Html.RednerPartial("_Products", Model.Products)')
于 2012-07-11T16:41:28.667 に答える