2012-05-02 4 views
0

複数のアクションを1つにまとめたくないので、1つのコントローラー内にすべてのコントローラーを置くのではなく、ディレクトリー内の各ビューのコントローラー・ロジックを分離したいと考えています。これを達成する方法は?ディレクトリ内のビューごとに異なるコントローラはありますか?

Views-- 
    FooFolder 
      Fooview.cshtml 
      Barview.cshtml 


Controllers-- 
    FooController.cs 
    BarController.cs 
+0

ただ好奇心から外れて、なぜあなたはそれをしたいですか? – MilkyWayJoe

+1

部分クラスを使用することもできます。少なくとも、論理を複数のファイルに分割する必要があります。私はコントローラーをスリムに保つのが好きなので、あまりにも多くのロジックを持つことでこれにぶち当たっていません。 –

+0

Barview.cshtmlをBarFolderにしてはいけませんか?コンベンションでは、各コントローラ用に1つのViewsフォルダが必要です。したがって、コントローラとビューフォルダを作成して自分自身をノックアウトしてください。 – DOK

答えて

1

特定のコントローラに特定のフォルダやアクションでビューを持っている必要はありません。これは単なる規約であり、ビューエンジンの置き換えやルート定義の変更、ビューパスの明示的な指定などによって変更することができます。ただし、コントローラーロジックを分離する場合は、コントローラー自体ではなく、ビジネスメソッドにロジックをオフロードしてコントローラーから呼び出すことで開始する場所を指定します。

+0

合意。そして、あなたのコントローラの動きがロジックで膨満しているのを知ったら、[あなたのコントローラをダイエットする](http://www.viddler.com/v/b568679c)ビデオを見ることをお勧めします。 – Dangerous

+0

ロジックをオフロードすることではありません。私はいくつかのイベントを処理するための数多くのビューを用意しています。コントローラごとにアクションメソッドを少なくするのがいいでしょう。コントローラにはサービスを注入することができます。 – Suedeuno

関連する問題