0

カスタム ビルド モデル オブジェクトを渡す単純な ASPNET MVC リスト ビューがあります。初めてサーバーにアクセスして、オブジェクトのリストを返し、ビューに表示する必要があります。さまざまな列による並べ替え、検索、およびページングを可能にするビューを作成しています。このためのすべてのコードを作成しました。ただし、サーバーにアクセスしてデータを取得するたびに。

最初に取得したリストを使用して、これらの DB 往復を削減できますか? もしそうなら、どうすればそれをビューからコントローラーに戻すことができますか?

Viewdata、Tempdata - またはformcollectionおそらく渡しますか?

4

2 に答える 2

1

実際、コントローラーに戻ると、サーバーに移動します。

データベースに再度クエリを実行して、フィルター処理、並べ替え、およびページ付けされたデータを取得したくないことを本当に意味していると思います。ビューに既にデータがあるモデルビュークラスからデータを並べ替えまたはページ付けしたいだけです。

このタイプの操作は、データベースを再クエリするより常に優れているとは限らないことに注意してください。ネットワークを介してより多くの情報をサーバーに送り返すことになり、通常、リストのような要素をプログラムでソートすることは操作が少ないためです。データベースからのソートされた検索よりも最適化されています。

ここでの重要な決定は、データベース クエリのコストとリストビュー要素のサイズの間で行われます。クエリが軽く、多くの結果を取得する (または取得できる) 場合、並べ替えは再クエリよりもコストがかかりますが、クエリが複雑で通常ほとんど結果をスローしない場合は、データベースを再クエリせずにデータを並べ替える方が効率的です。 .

並べ替え用の新しいコントローラー メソッドを作成してみてください。このメソッドは、リスト ビュー モデル クラスをパラメーターとして受け取ります。何らかの方法で、その情報をサーバーに送り返す必要があります。私は通常、AJAX 呼び出しを使用して、データを JSON としてコントローラーに渡します。

于 2012-09-27T08:49:59.473 に答える
1

http://www.knockoutjs.comを見てください。これにより、ブラウザーでリストを操作し、ビューの同期を維持するための多くの機能が提供されます。

しかし、それはオブジェクトのリストの大きさに大きく依存します。データ量が多い場合、実際には、既に実装した方法よりも実用的なソリューションです。

于 2012-09-27T07:07:25.857 に答える