2012-03-31 11 views
1

実際に私はいくつかのMVC3アプリケーションを持っており、このアプリケーションをメインのMVC3アプリケーションから呼び出す必要があります。 たとえば、ベースのMVC3アプリケーションから特定のコントローラでアクションを呼び出します。MVC3アプリケーションを使用して他のMVCアプリケーションを呼び出す

これを行うにはどうすればよいですか?

+4

1つの大きなサイトを使用して領域を分けて見たことがありますか? – aKzenT

+0

@aKzenT:もっと詳しく説明できますか?私はこれが私が望むものだと思う... –

+0

アクションを呼んで、何を意味するのですか?アーカイブするものを記述します。 –

答えて

2

大きなサイトを小さな塊で構成するために領域を使用できます。 MSDNから

MVCパターンは、プレゼンテーションロジックとビジネス・ロジックからアプリケーション のモデル(データ)ロジックを分離します。 ASP.NET MVCでは、この 論理区切りも、 構造体に物理的に実装されています。コントローラとビューは、関係を定義するために 命名規則を使用するフォルダに保持されます。この構造は、ほとんどのWebアプリケーションのニーズを でサポートしています。

ただし、アプリケーションによっては多数のコントローラーを使用でき、各コントローラーを複数のビューに関連付けることができます。これらのタイプのアプリケーションでは、 のアプリケーションでは、デフォルトのASP.NET MVCプロジェクト構造が と扱いにくくなる可能性があります。

大規模なプロジェクトに対応するために、ASP.NET MVCを使用すると、Web アプリケーションを領域と呼ばれる小さな単位にパーティション化できます。エリア は、大規模なMVC Webアプリケーションをより小さい の機能グループに分ける方法を提供します。領域は事実上、 内部のMVC構造体です。アプリケーションにはいくつかのMVC構造体が含まれている可能性があります。 (エリア)。

たとえば、1つの大規模な電子商取引アプリケーションを店頭、商品レビュー、ユーザ アカウント管理、および購買システムを表すエリアに分割することができます( )。各領域 は、アプリケーション全体の別個の機能を表します。

出典:Visual Studioでhttp://msdn.microsoft.com/en-us/library/ee671793.aspx

ちょうどあなたのプロジェクトをクリックして新しいエリアを追加するには、「エリアを追加」と言います。

あなたのビューから別の領域を参照する必要がある場合は、あなただけのルート値コレクションに「エリア」のパラメータを追加します。

@Html.ActionLink("[LinkText]", "[ActionName]", "[ControllerName]", new { area = "[AreaName]" }, null); 
1

コントローラは単なるクラスなので、コントローラをインスタンス化して、アプリケーションレイヤの一部であるかのようにアクションを呼び出すことができます。

開発の初期段階であれば、MVC4s WebAPIを検討することを検討してください。サブアプリケーションのコントローラをApiControllersに変換できる場合は、メインアプリケーションが呼び出すことができるサービスレイヤの開始点があります。

+0

正解、私は別のクラスからそれらをインスタンス化することができますが、私はそれをより良くしたいです。たとえば、各サブアプリケーションのルートファイルを使用して... –

+1

おそらくこれを動作させることができますが、その設定は、mvcアプリケーション間の緊密な依存性ですか?おそらく、あなたはインタフェースを使ってサブアプリケーションコントローラを抽象化し、Iocコンテナでそれらを解決することができます。 – vansimke

関連する問題