現在、準大型MVC 2プロジェクトで作業しており、関連するビューとビューモデルを持つコントローラーの数がかなり大きくなっています。ちょっとした分離を試みるために、私はMVC 2の領域機能を使用してそれに応じてプロジェクトをリファクタリングする方法を検討してきました。ベースコントローラーを継承する各領域のコントローラーで複数の領域を設定する - MVC
私が直面している問題の1つは、具体的なコントローラで使用する機能とプロパティを共有するためにコントローラの継承階層を持っていることです。
は、基本的に我々は現在、とても私たちのメインコントローラフォルダのように設定している:私は、つまり各作業コントローラの作成エリアを考えていますController (MVC)
+-- BaseController (Abstract)
+-- BaseWorkController (Abstract)
+-- BaseWorkAController (Abstract)
+-- ... a number of controllers exposing actions
+-- BaseWorkBControllers (Abstract)
+-- ... a number of controllers exposing actions
- エリア/ WorkA
- エリア/ WorkB
各領域には関連するビューとビューモデルがあります。 d偶数モデル。
しかし、私が直面しているような問題は、どこにBaseWorkControllerを配置するかということです。メインの「コントローラー」フォルダーにそれを残しても構いません。エリアコントローラーにはそのコントローラーへの参照が含まれています。また、異なる領域のコードは、異なるモデルや、特定の機能のために作成するいくつかの属性へのアクセスを必要とするかもしれません。
この設定は、領域の使用が許容されているようです。私が読んできたことから、私が探しているものは、分離した懸念と機能性に役立つようです。しかし、それが機能の完全な間違った使用である場合、私はこれを行うために投資したくないですか?
コントローラコードは、他の領域またはメインコアコントローラ/モデル/ビューフォルダの機能を使用することは許容されますか。
私は木が非常に深いと認めます。この機能の多くは、必要に応じて継承するコントローラによって使用される追加のメソッドであり、通常は保護されたメソッドです。彼らは特に大きなものではありません。特にBaseWorkAControllerなどです。私はこれをどのようにリファクタリングできるのか分かりませんが、私はこのレベルを取り除くことができるかもしれませんので、提案されたパターンを見ていきます。ありがとう。 – dreza