2009-11-02 10 views
8

Mam tu kilka kontrolerów, które zawierają metody, których mogę używać w innych kontrolerach.Kod udostępniania między kontrolerami ASP.NET MVC

Rozważałem przeniesienie niektórych z typowych funkcji do kontrolera podstawowego, który może następnie dziedziczyć. Problem polega na tym, że potrzebowałbym metod, których potrzebuję w wielu podstawowych kontrolkach, do których nie byłbym w stanie uzyskać dostępu. (Ponieważ nie możemy dziedziczyć z wielu kontrolerów bazowych).

Moim drugim pomysłem jest przeniesienie wspólnej funkcjonalności do ich własnych klas, poza folderem kontrolera.

Co byś zrobił? Czy w ASP.NET MVC istnieje świetny sposób na udostępnianie kodu takiego, o którym jeszcze nie wiem?

Odpowiedz

14

istnieje zasada temat programowania obiektowego, że należy przysługę skład nad dziedziczenia, i to bardzo dobrze pasuje do tego scenariusza.

Chciałbym utworzyć jedną lub więcej usług, które zawierają te metody, a następnie zużywają te usługi ze sterowników.

Aby uzyskać dodatkowe punkty, należy wyodrębnić interfejs z danej usługi i wprowadzić interfejs w Kontrolery, aby uzyskać maksymalną separację problemów.

+0

Mam nieco inny scenariusz. Mam kilka aplikacji sieci Web, których kontrolery logowania mają dokładnie ten sam kod_. Różnice między systemami logowania tych aplikacji są ograniczone do ich plików 'web.config'. Chciałbym mieć wspólną klasę kontrolera logowania w osobnym projekcie, do którego będą się odwoływały moje aplikacje internetowe. Czy to jest możliwe? – pyon

+0

Tak. Zawsze koduję wszystkie moje kontrolery w oddzielnych bibliotekach. –

+0

Nice. A co z widokami? – pyon

4

Uwzględniłbym w klasie pomocników czy coś takiego. Z tego, co opisaliśmy funkcjonalność pomaga kontrolerów/

1

Dostępne opcje to kontroler podstawowy lub klasa pomocnicza. Możesz przejąć kontrolę nad tworzeniem kontrolera i wstawić pomocnika w dowolne kontrolery, które tego potrzebują.

Powiązane problemy