2012-03-31 231 views
1

其實我有一些MVC3應用程序,我想從主MVC3應用程序中調用此應用程序。例如,從基礎MVC3應用程序調用特定控制器中的操作。使用MVC3應用程序調用其他MVC應用程序

有沒有這樣做的想法?

+4

你看過使用一個大的網站,並與區域分開嗎? – aKzenT 2012-03-31 11:47:20

+0

@aKzenT:你可以更好地描述它嗎?我認爲這是我想要的...... – 2012-03-31 11:50:27

+0

你是什麼意思,稱這個動作?描述你想要存檔的內容; – 2012-03-31 11:51:57

回答

2

您可以使用區域以較小的塊來構建大型站點。

從MSDN:

MVC模式將來自其表示邏輯和業務邏輯的應用 的模型(數據)的邏輯。在ASP.NET MVC中,這個 邏輯分隔也在物理上實現在項目 結構中,其中控制器和視圖保存在使用命名約定定義關係的文件夾中。這種結構支持大多數Web應用程序的需求。

然而,一些應用程序可以有大量的控制器,並且每個控制器可以與幾個視圖相關聯。對於這些類型的應用程序,默認的ASP.NET MVC項目結構可能變得笨拙難懂。

爲了適應大型項目,ASP.NET MVC允許您將Web 應用程序劃分爲稱爲區域的較小單元。區域 提供了一種將大型MVC Web應用程序分成更小的功能分組的方法。一個區域實際上是一個應用程序中的 內的MVC結構。一個應用程序可能包含幾個MVC結構 (區域)。

例如,一個大的電子商務應用程序可以被劃分成 代表的店面面積,產品評測,用戶 帳戶管理和採購系統。每個區域 代表整個應用程序的單獨功能。

來源:http://msdn.microsoft.com/en-us/library/ee671793.aspx

在Visual Studio項目中的只是點擊右鍵並說「添加區域」來添加一個新的領域。

如果您需要從您的視圖引用另一個區域,您只需要添加一個「區域」參數設置爲路由收藏價值:

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

控制器只是類,因此您應該能夠實例化它們並將它們的操作視爲它們是應用程序層的一部分。

另一個想法,如果你在開發早期,考慮到MVC4s WebAPI。如果您可以將子應用程序的控制器轉換爲ApiControllers,那麼您可以啓動主應用程序可以調用的服務層。

+0

正確的,我可以從其他類實例化他們,但我想做得更好。例如,爲每個子應用程序使用路徑文件... – 2012-03-31 11:54:28

+1

您可能可以得到這個工作,但不會在mvc應用程序之間建立緊密的依賴關係嗎?也許你可以使用接口抽象子應用程序控制器,然後用Ioc容器解決它們。 – vansimke 2012-03-31 12:03:33

相關問題