8

私の会社が最初に行った MVC サイトに取り組んでいます。コントローラーで選択リストを作成し、viewdata に入れ、html.DropDownList の作成時にそれらを読み取ることがよくあります。私がそれを行う方法について、私が臭いと思うことがいくつかあります。

  1. 一部のページでは、リストを繰り返すことができます (ユーザーが必要な数の部屋をホテルに追加できるホテルの部屋のボードレート)。現在、私は同じ選択リストを使用しています。

  2. 前の例では、「部屋」はrenderpartialまたはjqueryを介したajax呼び出しのいずれかによってレンダリングされたascxです。ascxがそれを使用できるようにコントローラーがselectlistを渡す最良の方法は何ですか?現在、ページのviewdataに追加します。これにより、viewdataがrenderpartialに渡されますが、ajax呼び出しでアクションメソッドも追加する必要がありますascxのViewdataへの選択リストですが、これが最善の方法であるかどうかはわかりません。

  3. 私はこの「静的」データを保持し、一般的なリストとして返すリポジトリを持っているので、コントローラーがデータを必要とするたびに、リストのリポジトリにヒットします (ボードレートだけでなく、人々のタイトルのようなものもいくつかあります。 mr、mrs など) データが変更されることはめったにないため、ある種のキャッシュの方が優れていると思います。

これらの分野で誰かアドバイスはありますか?

4

2 に答える 2

3
  1. これらの SelectLists が完全に等しい場合は、複数の DropDownLists に対して 1 つのリストを使用することをお勧めします。

  2. その一般的な使い方のように見えます。私も同様のアプローチを使用していますが、いくつかのコントロールを Html.RenderAction に移植することを考えています。ええ、私はそれが純粋なMVCではないことを知っています:)

  3. ORM がキャッシュをサポートしている場合は、もちろんそれを使用してください。

ただし、プロジェクトが小さくなく、今後も成長すると思われる場合は、リポジトリの上にサービス レイヤー (PoEAA パターン) を実装することをお勧めします。これには、ビジネス ロジックとキャッシュ管理ロジックも含まれます。

dal または mvc レイヤーに影響を与えずにキャッシュを透過的に管理したい場合は、AOP を使用するのが最善の方法だと思います。

于 2008-12-15T14:14:13.583 に答える
0

これを行う 1 つの方法は、選択リストに必要なデータを型付きビューを介してモデルに配置することです。ビューは、モデル内のデータを反復処理して、必要な選択リストを生成できます。オブジェクトを ViewData コレクションに直接詰め込むこともできますが、型指定されたビューを使用すると、コードがよりクリーンになると思います。

于 2008-12-15T21:07:53.513 に答える