2009-03-31 18 views
2

システム内で操作する必要がある各テーブルに別のコントローラが必要ですか?ASP .NET MVC - コントローラの数

/DataTypeA/List --list for A 
/DataTypeA/Create -- create new data 
. 
. 
. 
/DataTypeB/List --list for B 

のか、単に内の別個のアクションが存在すべきである次のよう

は、一例として、コンテンツ管理システムの管理セクションを設計する際に、ドメインを検索それぞれ設定するための別個のコントローラがあるはずAdminコントローラは次のようになります。

/Admin/DataTypeA -- this lists DataTypeA 
/Admin/DatatypeB -- this lists DataTypeB 
/Admin/DataTypeA_Create -- Create a new DataTypeA 
/Admin/DataTypeB_Create -- Create a new DataTypeB 

答えて

3

私のアプローチは、システム内の主要アクター(テーブル)用の新しいコントローラーを作成することです。補助データの終了は、補助データが関連付けられている主テーブルのコントローラによって更新されます。たとえば、ユーザーコントローラーがあり、UserContactコントローラーを個別に作成するのではなく、ユーザーコントローラー内の特定のユーザーに関連付けられているUserContact情報を更新するアクションがあります。

0

基本的には、実行していることとコードをどのように整理するかによって異なります。 DataTypeAがDataTypeBとは明らかに異なる場合(つまり、動物対自動車)、おそらく異なるコントローラを使用することになります。しかし、DataTypeAがDataTypeBのサブセット(またはそれに似ている)であれば、異なるアクションを持つ1つのコントローラーを使用します。

ASP.NET MVCは非常に柔軟ですが、冒頭では、あなたが溺れているような柔軟性を感じています。コードを書き始めるだけで間違った方向に向いていると分かります。 MVCの学習曲線があります。それと一緒に行く。

0

私はそれが主にデザインの選択だと思います。私は明確な答えはないと思いますが、あなたがパターンの手紙に固執していたら、データ型ごとに1つのコントローラのオプションになると思います。

私は少し前にASP.NET MVCを試してみるために小さなプロトタイプのブログシステムを組み込みました(それでもWIP、悲しいことに)。私が作成した1つのデザインの決定は、コメントコントローラを投稿に含めることでしたコントローラ。私はしかし、別のコントローラを試した後にこれを決めました。 2つのコンセプトが密接に結びついているので、これはうまくいったと思います。ブログ記事なしではコメントを書くことはできません。

1

賭けの方法は、プレゼンテーションレイヤー(この場合はWebレイヤー)を取得することです。技術的にではなく論理的にグループ化する必要があります。製品とカテゴリー表がある場合、カタログ・コントローラーまたはストア・コントローラーを作成することができます。これにより、多くのコードを再利用して物事を整理しておくことができます。