0

私はasp.net MVC 3を使用しています:

入力フィールドがGETリクエスト中に動的に生成されるビューがあります(データベースから取得されます)。POST 中に検証が失敗した場合は、フィールドを再表示して再度取得する必要があります。冗長なデータベース アクセスを回避する方法はありますか。つまり、GET 要求と POST 要求の間でデータを共有する方法はありますか?

4

3 に答える 3

1

TempDataやSessionなどにデータを保存するなど、これを処理する方法があります...しかし、私はあなたがそのようにすべきではないと思います。常にデータ アクセス レイヤーを再クエリして取得する必要があります。これは、常に db テーブルをクエリするという意味ではありません。データ アクセス レイヤーは、キャッシュからデータを取得したり、テーブルに対してクエリを実行したりできます。

バックグラウンドで、TempData は Session を使用して値を永続化します。TempData の値は、読み取られるか、セッションがタイムアウトするまで保持されます。このように TempData を永続化すると、リダイレクトなどのシナリオが可能になります。これは、TempData の値が単一の要求を超えて使用できるためです。

于 2012-05-08T12:24:38.237 に答える
0

直接ではありませんが、そうです。

フォームを投稿するときに、すべてのデータをサーバーに送り返し、そのデータをモデルに送信する場合、モデルには、フィールドに入力するために必要なすべてのデータが含まれます。

jsonデータを受信するためのajaxを介した投稿があり、ajaxから結果を取得するときは、変更されたフィールドのみにデータを入力します。

ただし、数秒以上の特に面倒なクエリについて話しているのでない限り、再クエリはそれほど大きな問題ではないと思います。

ああ、セッションやキャッシュにデータを保存しないでください。単一の投稿でRAMを詰まらせる理由はありません。これにより、セッションキーを誤って再利用した場合に、後で潜在的な問題が発生する可能性があります。

于 2012-05-08T12:26:25.630 に答える
0

あなたが望むのは「遅延読み込み」だと思います。

staticデータベースクエリが発生したときにその結果を格納する変数を (データベースクエリを実行するクラスで)作成しますが、最初はnull. static次に、この変数が有効かどうかを確認する getter メソッドを作成しますnull。の場合nullは、DB クエリを実行して結果を保存します。それ以外の場合は、staticvar の内容を返します。次に、常にそのゲッターを使用すると、準備が整います。

特定の衒学的な人々staticがこのような変数の使用にうんざりしていることは知っています...しかし、それはうまく機能し、大騒ぎすることはほとんどありません。

于 2012-05-08T12:32:42.490 に答える