Движок представления обрабатывает ASP.NET контент и ищет инструкции, как правило, для вставки динамического контента в выходные данные, отправленные браузеру. На данный момент платформа ASP.NET включает два встроенных движка представления:
- Движок Razor. Более современный, с простым и удобным синтаксисом
- Движок ASPX, также известный как движок представлений Web Forms.
Задача движка представлений заключается в преобразовании запросов к представлениям в объекты ViewEngineResult. Первые два метода в интерфейсе, FindView и FindPartialView, принимают параметры, в которых указывается запрос и обработавший его контроллер (объект ControllerContext), имя представления и его макет, а также сообщение о том, может ли движок представлений использовать предыдущий результат из кэша. Эти методы вызываются во время обработки ViewResult. Последний метод, ReleaseView, вызывается, когда представление больше не требуется. Последним структурным элементом движка представления является интерфейс IView. Мы передаем реализацию IView в конструктор объекта ViewEngineResult, который будет позже возвращен из методов движка представления. MVC Framework вызывает метод Render. Параметр ViewContext предоставляет информацию о запросе клиента и выводе метода действия. Параметр TextWriter записывает ответ клиенту.
Способы передачи данных в представление из методов контроллера.
ViewBag |
Динамический словарь из пар ключ-значение. Не нужно приведение типов |
ViewData |
Подобен ViewData. Но для использования сложных объектов в представлении нужно приведение типов |
TempData |
Как ViewData, представляет словарь пар ключ-значение, но позволяет сохранять значение в течении всего текущего запроса, пока не будет извлечено. |
Модель представления |
В предст-ии через @model устанавливается модель представления. Тип модели = тип объекта, переданного в метод View(). |
Введение в MVC 3 движка Razor позволило уменьшить синтаксис при вызове кода C#, сделать код более "чистым". Аналогичный пример на Razor выгдядит так:
@foreach(BookStore.Models.Book b in ViewBag.Books) {<li>Книга: b.Name </li>}
Для созд-я единообразного вида сайта применяются Layout-страницы. Мастер-страницы - это по сути те же самые предст-я. Мы можем определить на мастер-странице некоторые элем-ы, которые будут отобража на всех страницах сайта. А также мы можем определить заполнители или плейсхолдеры, содерж-е кот. обеспеч. др. представления.
В приложениях на ASP.NET MVC кроме обычных представлений используются частичные представления. Их отличительной особенностью является то, что их можно встраивать в другие обычные представления. Частичные представления могут использ также как и обычные, однако наиболее удобной областью их использ-я является рендеринг результатов AJAX-запроса. По своему действию частичное представление похоже на обычное, только для него по умолчанию не определяется мастер-страница.
Теперь рассм, как мы можем встраивать частичные представления в обычные. Метод Html.Partial() встраивает код частичного представления в обычное. В качестве параметра в метод передается имя представления. Кроме метода Html.Partial() частичное представление можно встроить с помощью другого метода - Html.RenderPartialAsync. Этот метод также принимает имя представления, только он используется не в строчных выражениях кода Razor, а в блоке кода, то есть обрамляется фигурными скобками. Html.RenderPartialAsync напрямую пишет вывод в выходной поток в асинхронном режиме, поэтому может работать чуть быстрее, чем Html.Partial.
Строчные хелперы похожи на обычные определения методов на языке C#, только начинаются с тега @helper. Строчные html-хелперы удобно использовать, если необходимо создать один метод, который предполагается использовать в представлении многократно.