8

私はかみそりでAsp.net MVC4を使用しています。同じソリューション内であるプロジェクトから別のプロジェクトにコントローラーを呼び出す方法を知りたいです。(私はMVC4が初めてです)

ソリューション エクスプローラーのスクリーンショット

4

3 に答える 3

5

コントローラーを別のプロジェクト (クラス ライブラリまたは 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" }
        );
于 2013-10-04T03:29:14.357 に答える
4

答えは、解決しようとしている具体的な問題に大きく依存します。

これは、Stack Overflow で質問する際に覚えておくべき重要なことです。思いついた解決策を達成する方法よりも、問題を解決する方法を尋ねる方が有益な場合があります。

ここでの目標がコードの複製を避けることである場合、最も簡単な答えは、最初のプロジェクトへの参照として 2 番目のプロジェクトを追加することです。コントローラーを適切にインスタンス化する必要があるため、コントローラーへのアクセスはまだ少し難しいため、代わりに、3 番目のプロジェクトに複製することを避けたいコードを抽象化し、両方の MVC プロジェクトで使用するユーティリティ クラスを呼び出すようにすることをお勧めします。作成しました。

もう 1 つの可能性は、クライアント/サーバーの関係を維持しながら、Web サービスを相互に対話させたい場合です。これは、2 番目の Web サービス プロジェクトを実行するときに Visual Studio が選択するポート番号に向けられた HTTP Web 要求を作成することによって実現できます。.Net はこれを行うことができますが、個人的にはRestSharpを使用することをお勧めします。

于 2013-10-04T03:25:36.420 に答える