Главная страница   /   16.1. Расширяемость контроллеров (ASP.NET MVC 4 в действии

ASP.NET MVC 4 в действии

ASP.NET MVC 4 в действии

Джеффри Палермо

16.1. Расширяемость контроллеров

Предлагаемая по умолчанию реализация контроллера уже включает в себя некоторые конкретные идеи того, как можно выбирать, выполнять и расширять методы действий. Эта функциональность берется из базового класса Controller фреймворка ASP.NET MVC, который является реализацией по умолчанию интерфейса IController.

IController – это простой интерфейс, который предоставляет простой метод Execute() и который вы могли бы реализовать напрямую. При реализации этого интерфейса вы также можете использовать такую функциональность фреймворка как маршрутизация и фабрика контроллеров, а остальную часть фреймворка отбросить в сторону.

Определение интерфейса IController продемонстрировано на рисунке 16-1.

Рисунок 16-1: В интерфейсе IController объявлен единственный метод, Execute()

Доступна еще одна возможность расширения контроллеров, которая не является столь скудной как реализация IController. Фреймворк содержит класс ControllerBase, который предоставляет самые основные свойства для управления ViewData и TempData. Класс ControllerBase приведен на рисунке 16-2. Этот класс является минимальным по содержанию, но все-таки позволяет использовать преимущества некоторых концепций, связанных с представлением.

Рисунок 16-2: Класс ControllerBase предоставляет возможность интеграции с роутингом, а также с HttpContext

Несмотря на существование во фреймворке возможностей расширения, предоставляемых интерфейсом и базовым классом, некоторые разработчики и проектировщики обменивают продуктивность, встроенную в класс контроллеров фреймворка, на дополнительные действия, необходимые для их собственной реализации интерфейса IController. То же самое происходит и с классом ControllerBase. Нам не нужно жертвовать продуктивностью, так как существует множество возможностей расширения, встроенных в класс Controller. Мы рассмотрим их далее.