私はかみそりでAsp.net MVC4を使用しています。同じソリューション内であるプロジェクトから別のプロジェクトにコントローラーを呼び出す方法を知りたいです。(私はMVC4が初めてです)
3 に答える
コントローラーを別のプロジェクト (クラス ライブラリまたは MVC プロジェクトなど) に追加するだけです。コントローラーを共有するプロジェクトがいくつかあります (webAPI と MVC)。通常、API コントローラーには領域の制約を使用し、MVC コントローラーには名前空間の制約を使用します。特に、一部のプロジェクトで使用されるベース HomeController.cs のようなものがあり、特定の 1 つの MVC アプリケーション プロジェクトだけでそれをオーバーライドしたい場合は特にそうです。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "Common.MVC.Controllers" }
);
答えは、解決しようとしている具体的な問題に大きく依存します。
これは、Stack Overflow で質問する際に覚えておくべき重要なことです。思いついた解決策を達成する方法よりも、問題を解決する方法を尋ねる方が有益な場合があります。
ここでの目標がコードの複製を避けることである場合、最も簡単な答えは、最初のプロジェクトへの参照として 2 番目のプロジェクトを追加することです。コントローラーを適切にインスタンス化する必要があるため、コントローラーへのアクセスはまだ少し難しいため、代わりに、3 番目のプロジェクトに複製することを避けたいコードを抽象化し、両方の MVC プロジェクトで使用するユーティリティ クラスを呼び出すようにすることをお勧めします。作成しました。
もう 1 つの可能性は、クライアント/サーバーの関係を維持しながら、Web サービスを相互に対話させたい場合です。これは、2 番目の Web サービス プロジェクトを実行するときに Visual Studio が選択するポート番号に向けられた HTTP Web 要求を作成することによって実現できます。.Net はこれを行うことができますが、個人的にはRestSharpを使用することをお勧めします。