Книга: ASP.NET MVC Framework
Контроллер
Контроллер
Рассмотрим код контроллера HomeController, приведенный в листинге 1.2.
Листинг 1.2. Код контроллера HomeController ИЗ приложения-заготовки
[HandleError]
public class HomeController : Controller {
public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View();
}
public ActionResult About()
{
return View();
}
}
На примере этого кода можно рассмотреть несколько основных концепций. Прежде всего, все классы контроллеров наследуют тип Controller
, предоставляющий инфраструктуру для обработки запросов.
Каждый из контроллеров содержит методы, возвращающие значения типа ActionResult
. В приведенном примере используется вспомогательный метод View
, возвращающий тип ViewResult
, который наследует тип ActionResult
и передает управление механизму представлений — если параметр "имя представления" не передан методу View
, то используется имя действия в качестве имени представления.
Задачей контроллера является обработка параметров запроса (в примере параметров действия не принимают, что тоже может быть в реальных приложениях — для отображения страниц, не зависящих от параметров запроса), заполнение коллекции ViewData
и передача управления движку представлений.
В данном случае, например, действие Index
поместит в коллекцию ViewData
элемент Message
, после чего передаст управление представлению Index.aspx, расположенному в папке /Views/Home.
Кроме того, в листинге 1.2 проиллюстрирована еще одна важная концепция, касающаяся кода контроллеров, — использование атрибутов для управления поведением контроллеров. Так, для того чтобы управлять поведением всего контроллера, можно установить атрибуты на класс контроллера, а для того чтобы управлять поведением конкретного действия — на соответствующий метод класса контроллера. В приведенном в листинге 1.2 коде используется атрибут для всего класса контроллера HandleError
, который инструктирует среду MVC Framework на предмет возникновения необработанного исключения в любом из методов контроллера HomeController
, необходимо будет это исключение поймать и отобразить пользователю специальную страницу с сообщением об ошибке.
- 4.18. Контроллер асинхронного обмена SCI
- Неисправность контроллера
- Samba как контроллер домена
- Подсистема прерывания контроллера msCAN12.
- Контроллеры и конфигурирование RAID
- Глава 4 МИКРОКОНТРОЛЛЕРЫ 68HC12 И HCS12: АРХИТЕКТУРА И ПРОГРАММИРОВАНИЕ
- 8.1.2. Контроллер интерфейса клавиатуры и мыши 8042
- 9.1.2. Контроллер НГМД
- 12.4.1. Контроллер прямого доступа 8237A
- 1.13. Управление массивом контроллеров видов, относящихся к навигационному контроллеру
- 1.16. Представление контроллеров, управляющих несколькими видами, с помощью UITabBarController
- 6.1. Добавление в раскадровку навигационного контроллера