Спонсор: Microsoft
Опубликован: 30.01.2013 | Доступ: свободный | Студентов: 1180 / 138 | Длительность: 17:23:00
Теги: .net, ajax, asp, www, интранет
Лекция 6:

Построение приложений на основе шаблона "Model-View-Controller" с применением ASP.NET MVC Framework

Представления

Механизм генерации представлений в ASP.NET MVC Framework является программным компонентом, который отвечает за формирование пользовательского интерфейса. Механизм представлений построен таким образом, что представление не зависит ни от модели, ни от контроллера. По этой причине представления в составе ASP.NET MVC Framework можно легко подменять даже после разработки основной логики контроллера и модели.

С точки зрения программной модели ASP.NET MVC Framework представление – это объект, унаследованный от базового класса ActionResult. Это означает, что можно создать собственный класс-наследник от ActionResult и определить собственную логику представления. Для того, чтобы использовать шаблоны, которые размещаются в папке "Views" используется уже готовый объект ViewResult. Чтобы сгенерировать этот объект, базовый класс Controller содержит метод View. Для того, чтобы представление могло отобразить данные, полученные от контроллера или модели, контроллер должен поместить их в коллекцию ViewData, которая изначально также определяется в контроллере. Это означает, что если требуется отобразить пользователю данные, которые были получены в результате каких-то бизнес-вычислений или полученные из источника данных, они обязательно должны быть помещены в объект ViewData и переданы представлению из других частей приложения. Представление в этом случае должно извлечь эти данные из ViewData и отобразить их на странице.


Для извлечения данных из коллекции ViewData в рамках представления можно использовать следующий код в разметке ASPX.


Аналогичным образом можно передать несколько параметров из контроллера представлению. Однако коллекция ViewData содержит не типизированные данные. Это означает, что при выборке данных в рамках представления будет получен объект типа Object. Это может быть не всегда удобно. В этом случае можно использовать строго типизированную передачу данных представлению. Для этого необходимо объявить класс, содержащий необходимые свойства и поля. Например, такой класс может выглядеть следующим образом.


После этого, необходимо изменить содержание директивы Page страницы и явно указать какой класс следует использовать для передачи данных представлению.


Наконец, при передаче данных от контроллера следует указать значение свойств данного класса.


После этого, в разметке ASPX-страницы можно обращаться к данным используя строго типизированный объект HomeViewData. Для этих целей используется свойство Model в составе страницы.


По умолчанию в ASP.NET MVC Framework используются представления, построенные на основе шаблонов ASPX, которые активно используются в ASP.NET Web Forms. Однако при необходимости механизм генерации страницы может быть изменен. Разработчики из Сообщества уже реализовали ряд альтернативных механизмов генерации страницы. Если по каким-либо причинам требуется использовать другой механизм, то это можно сделать подменив "движок" представления, используя фабрику представлений. Например, можно использовать альтернативный механизм генерации страниц – Brail. Для этого необходимо подключить внешние библиотеки, которые реализуют эту функциональность, после чего использовать объект ViewEngines для подмены "движка" для генерации представлений. Так же как и в случае с регистрацией маршрутов, эта операция выполняется обычно при старте приложения.


При этом внешний вид шаблона будет иметь иной вид.


Таким образом, механизм генерации представлений является полностью независимым программным компонентом, который имеет одну определенную задачу – генерация пользовательского интерфейса.

Краткие итоги

Механизм генерации представления является независимым от других программным компонентом ASP.NET MVC Framework. В качестве шаблонов по умолчанию используются шаблоны ASPX, на основе которых строится представление в составе ASP.NET Web Forms. Для передачи данных от контроллера представлению используется коллекция ViewData или строго типизированный объект. Механизм генерации представления может быть подменен и в качестве основы генерации представления использоваться какая-либо сторонняя разработка.

Контрольные вопросы

  • В чем заключается основное преимущество использования шаблона проектирования "Model-View-Controller"?
  • Как шаблон проектирования "Model-View-Controller" реализуется в ASP.NET MVC Framework?
  • Какие этапы обработки проходит запрос от пользователя в рамках ASP.NET MVC Framework?
  • Какую структуру имеет типичный проект на основе ASP.NET MVC Framework?
  • Для чего необходим механизм определения маршрутов?
  • Какой объект отвечает за хранение маршрутов?
  • Для чего необходимы контроллеры в модели ASP.NET MVC Framework?
  • Как передаются данные от контроллера представлению?
  • Каким образом контроллер выбирает какое именно представление необходимо использовать в данный момент?
  • Каким образом можно подменить "движок" представления в ASP.NET MVC Framework?
Марина Воробьева
Марина Воробьева
Виктория Ткаченко
Виктория Ткаченко

Проигрыватель не работает. После нажатия кнопки Play ничего не происходит.

Владимир Романов
Владимир Романов
Россия, Москва, МПУ им Н.К. Крупской