web-dev-qa-db-ja.com

MVCでは、ビューのアクションメソッドを共有ディレクトリのどこに配置しますか?

C#を含むMVC.NETフレームワークを使用して構築されたWebサイトで、いくつかの共有ビューと部分ビューを使用しています。ビューを適切に表示するために、コントローラーに常駐しなければならないコードが少しあります。現在、私はそのロジックをコントローラー間で複製しています。

例としては、エラーIDを取り込んでからデータベースからレコードを取得し、エラーの種類に基づいてビューのフォーマットを変えるビューがあります。表示する前に、コントローラー内のデータに対して行う必要のある少量の作業があります。

ビューが共有ディレクトリにあり、ビューのコントローラーがどこにあるか?または、それだけのために新しいコントローラーを作成する方が良い設計ですか?

以前のプロジェクトで発生した「コントローラーのクリープ」を防ぐ設計を選択しようとしています。

更新:私は現在、Razorを使用したMVCについて学び、HTML.Action拡張メソッドについて学びました。このプロジェクトに戻って書き換える場合は、メソッドを「共有」コントローラーに入れ、HTML.Actionを使用してデータをフォーマットし、必要な画面に表示します。

4
Amy Patterson

この問題について考えているときは、視点を変えてみてください。ビューにはアクションがありません。アクションはビューへの参照を返します。複数のアクションが同じビューへの参照を返す場合や、アクションがビューに関連しない応答を返さない場合があります。これがMVCパターンの関連部分です。

MVC for ASP.NETでは、デフォルトのViewEngineを使用して、アクションが(return View("ViewName")を使用して)ビューへの参照を返す場合、フレームワークは最初にコントローラーの名前のフォルダーを検索し、次に「アプリケーションのViewフォルダにあります。

したがって、「ビューが共有ディレクトリにある場合、そのコントローラはどこに行くのでしょうか?」という質問です。本当に意味がありません。考慮すべきことは、ビューが共有ディレクトリに配置され、複数のコントローラーからアクセスできるようにすることです。

3
pdr