別のアセンブリにASP.NET MVCのアプリでモデル、ビューとコントローラを分離する方法
-
05-09-2019 - |
質問
現時点では私は、ASP.NET MVCフレームワークに取得しようとしています。
私のテストアプリケーションのほとんどのために私は、単一のアセンブリ/プロジェクトを使用しました。これは、いくつかの小規模なアプリケーションのためにうまく働きました。それから私は、私は別のアセンブリに私のモデル、コントローラとビューのクラスを置くことができるか疑問に思いましたか?本当に大きなウェブ・アプリケーションでは、単一のアセンブリ/プロジェクトにすべてを置くことは非常に現実的ではありません。
だから私の質問は:それは、組み込みのルーティングエンジンの柔軟性を失うことなく、ビューおよび/またはコントローラの別のアセンブリで検索するようにASP.NET MVCフレームワークを伝えることは可能です。
?解決
(不明)が正しいです。二つのプロジェクト、クラスライブラリとMVC Webプロジェクトを作成します。 MVCプロジェクトファイル(グローバルasaxなど)の背後にあるコントローラとコードが含まれているクラスライブラリを参照する必要があります。ここではレイアウト例です。
クラスライブラリだけは.csファイルなしビュー(.aspxの/た.ascxファイル)が含まれている必要があります。
MyProject.BaseSite (class library) + Controllers - HomeController.cs - ... any other controllers - default.aspx.cs - global.asax.cs
MVC Webプロジェクトは、コンフィグ、景色などと自分のクラスライブラリ
への参照が含まれている必要がありますMyProject.ExampleSite + Content + scripts + css + images + Views + Home - index.aspx - .. other aspx files + Shared - Site.master - web.config
別の名前空間を覚えておいてください。その後、同じコードを参照する複数の例のウェブサイトを作成することができます。これは、あなたが効果的に完全に異なったウェブサイトを肌することができます。
他のヒント
アセンブリを作成してから、アプリケーション、適切な場合には、それぞれを参照するようにコンパイルし、責任の各層に別々のクラスライブラリプロジェクトを作成します。
はい、あなたはサポートのいずれかを使用する場合は、<のhref = "http://haacked.com/archive/2007/12/07/tdd-and-dependency-injection-with-asp.net-mvc.aspx容器は、その後、そのコンフィギュレーション・データは、典型的には、クラスだけでなく指定する「REL =」nofollowをするnoreferrer ">依存性注入は、特定のクエリに応答してロードするだけでなく、アセンブリがそこからロードされます。これは、あなたが任意のアセンブリにまたがってクラスを分割するとMVCはまだそれらを見つけることができるようになりますことができます。
もちろん、不明(グーグル)が提供するシンプルな答えも動作しますが、!
私は、これは本当に古い質問ですが、私はどのようにあなたが
を求めている正確に何をについての記事を書かれていることを実現しますのみDavidの答え@完了します:
あなたのプロジェクトがNuGet
によって管理されている場合は、は、クラスライブラリを作成した後、クラスライブラリのルートにごpackages.config
ファイルのコピーを行います。その後は、各クラスライブラリのニーズに応じて、パッケージを追加または削除各packages.config
ファイルを編集する必要があります。