2009-11-02 77 views
8

我在這裏有幾個控制器,其中包含我可以在其他控制器中使用的方法。在ASP.NET MVC控制器之間共享代碼

我考慮將一些常用功能移出到基本控制器,然後這些控制器可以從中繼承。與此問題是,我有我需要在多個基地控制我不能訪問的方法。 (因爲我們不能從多個基本控制器繼承)。

我的另一個想法是將常用功能移出到Controller文件夾以外的他們自己的類中。

你會怎麼做?在ASP.NET MVC中有沒有一種很好的方式來共享這樣的代碼,但我還不知道?

回答

14

有一個關於面向對象的編程經驗法則,你應該在繼承青睞成分,它非常適合這個場景。

我會做一個或多個封裝有問題的方法的服務,然後從控制器中使用這些服務。

對於額外的點,從相關服務中提取一個接口,並將接口注入到控制器中以最大限度地分離關注點。

+0

我有一個稍微不同的場景。我有幾個Web應用程序,其登錄控制器具有_完全相同的code_。這些應用程序的登錄系統之間的差異僅限於其web.config文件。我想在一個單獨的項目中有一個共享的登錄控制器類,它將被我的Web應用程序引用。那可能嗎? – pyon 2011-06-21 16:51:44

+0

是的。我總是將所有控制器編碼到單獨的庫中。 – 2011-06-21 18:50:03

+0

不錯。那麼觀點呢? – pyon 2011-06-21 19:00:39

4

我會考慮幫助者類或其他東西。從你所描述什麼功能幫助控制器/

1

選擇似乎是基礎控制器或助手類。您可以控制控制器的創建,並將幫助器注入任何控制器所需的控制器。

相關問題