2008-08-30 18 views
9

ASP.NET MVCプロジェクトを開始していますが、経験は全体的には良いものですが、私のコントローラーがなったスパゲッティの混乱には喜ばしくはありません。私はオンライン(CodeCampServerなど)を見てきました。コントローラメソッドがSRP(単一責任の原則)に一貫して違反している同じ問題を抱えているようです。コントローラメソッドは、リクエストがあれば単純にレンダリングします。 GETを実行しますが、POSTの場合はモデルを更新します。これで、アプリケーション全体で複数の論理ルートを管理するコントローラメソッドが得られました。つまり、フォーム上でクリックされたボタンを確認し、それに応じて動作します。私は、JavaScriptを使って各ボタンのクリックを別のフォームアクションにリダイレクトすることができましたが、何かがすぐに感じられません...もう一つの大きな問題は、魔法の文字列の拡散です - ViewData ["foo"] = blah;長い話を簡単に言えば、どうやってコントローラのロジックを構成していますか?ビューごとに1つの巨大なモデルオブジェクト?小さなコントローラメソッドとJavaScriptの多くは、ルータですか?私の目標はメンテナンス可能なコードです。機能が積み重なって、滑りやすい斜面を滑り落ち始めています。ASP.NET MVC:コントローラの構成

答えて

8

ASP.NETプレビュー5(CodePlexで利用可能)には、[AcceptVerbs]属性があります。 Phil Haackは、それがどのように使用されているかについての相談をblog post持っています。

ビューデータマジックキーの質問は興味深い問題です。ビューを半独立構成要素の集まり(特に新しい部分ビューのサポートの観点から)と考える場合、強く型付けされたモデルを作成することは、ビューのいくつかの部分が比較的独立している必要があるため、あまり理想的ではありませんお互いに。

0

さまざまな人々がこの問題をどのように処理していますか?私はちょうどカップル時間をモデルフォルダの内部のジャンパーを見直すのに費やしたことを知っています。私は、フォルダを作成することは、視覚的な混乱を減らすのに役立つことを発見している、一致する名前空間を使用すると、あまりにも役立ちます。

しかし、私のコントローラは現在のところモノリスです。問題は、私がプロジェクトのこの時点まで学ぶことに焦点を当ててきたことです。

私は今MVCで良いハンドルを得ています。だから、複雑さを見直し、コントローラを名前のついたクリーンな機能に変更することを検討してみましょう。

他の人がコントローラーをサブコントローラーに分割していますか? (そのようなものがある場合)

+0

コントローラをコーディングするトリックは、それらを見て、それぞれのアクションメソッドが20行または30行を超えているか、比較的少数である場合、どのように減らすことができますか?基本的にDRYを維持して、やっていることを再考し、そのロジックを適切なSERVICEレイヤに移動します。これは再利用できます。 –

+0

また、ROB CONERYのStoreFront MVCスターターキットをダウンロードして、彼のソリューションを階層化しているかどうかを確認してください。>非常に美しいawesomesauce。 (グーグル、私はこの遅い(早い?!)時のリンクを見つけるのに悩まされることができない、朝の... hth! –

関連する問題