ASP.NET MVC Framework | страница 10
> {
> 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
, необходимо будет это исключение поймать и отобразить пользователю специальную страницу с сообщением об ошибке.
Представление
В MVC Framework используется представление на основе ASPX-файлов. Так, например, рассмотрим представление Index.aspx из примера выше. Этому представлению передается коллекция >viewData
с элементом >Message
, значение которого должно быть отображено на странице. В листинге 1.3 приведен код этого представления.
Листинг 1.3. Представление Index.aspx
><%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
>Inherits="System.Web.Mvc.ViewPage" %>
>
> ContentPlaceHolderID="TitleContent" runat="server">