Жизненный цикл запроса в Umbraco
Процесс Umbraco принимает запрос, как он сопоставляет URL с элементом контента и выполняет обработчик ASP.Net.
Подготовка обработки запроса опубликованного контента
Для обработки входящего запроса на опубликованный контент создается экземпляр
PublishedContentRequest.
Он создается в
UmbracoModule.ProcessRequest(…)
Что он делает:
- Проверяется что Umbraco готова, и запрос это запрос документов.
- Сздается экземпляр PublishedContentRequest
- Для экземпляра запускается метод PublishedContentRequestEngine.PrepareRequest()
- Обрабатываются перенаправления
- Если контент не найден, то происходит перенаправление на 404
- Происходит перенаправление на MVC или WebForms обработчик
Экземпляр запроса контента
Как только запрос готов, он представлен экземпляром
Экземпляр запроса содержит все, что необходимо для отображения контента, включая информацию о домене, модель контента, которая будет отображена, и шаблон, который будет использоваться. Информация также используются в время работы процесса MVC Controller/Action selection process.
PublishedContentRequest, который обрабатывает Umbraco.Экземпляр запроса содержит все, что необходимо для отображения контента, включая информацию о домене, модель контента, которая будет отображена, и шаблон, который будет использоваться. Информация также используются в время работы процесса MVC Controller/Action selection process.
Определение обрабатывающего движка
Umbraco поддерживает MVC и Webforms, но MVC более предпочтительный и используется по умолчанию. Определение движка для отображения происходит тогда, когда готов запрос контента и определено название шаблона. Процесс выбора движка довольно простой:
- Если подходит шаблон MVC по расположению стандартных представлений MVC
- Выбирается MVC
- Иначе, если имеется MVC Controller/Action подходящие для запроса
- Выбирается MVC
- Иначе, если имеется шаблоны для контента и файл, соответствующий для Webforms
- Выбирается Webforms
- Иначе
- Выбирается MVC
Выбор контроллера и действия
Как только запрос контента создан, и выбран движок MVC, начинается выполнение контроллера и действия MVC.
Действия по умолчанию
По умолчанию Umbraco выполняет каждый запрос через встроенный контроллер:
Umbraco.Web.MVC.RenderMvcController. Действие MVC, который выполняется по умолчанию для каждого запроса это Index контроллера RenderMvcController.Изменение действия по умолчанию
Однако можно использовать по умолчанию собственный контроллер и метод действия. Они могут быть установлены в методе
ApplicationStarting, например:public class MyCustomStartupHandler : ApplicationEventHandler
{
protected override void ApplicationStarting(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{
DefaultRenderMvcControllerResolver.Current.SetDefaultControllerType(typeof(MyCustomRenderMvcController));
}
}
Yо необходимо, чтобы пользовательский контроллер был унаследован от
Umbraco.Web.MVC.RenderMvcController. Vожно переопределить метод Index, чтобы выполнить собственную логику.Выбор пользовательского контроллера
Пользовательские контроллеры могут использоваться для обработки различных типов документов и шаблонов Umbraco. Это называется 'Hijacking Umbraco Routes'. Более подробная информация, как этот процесс работает будет, будет рассказана в разделе пользовательских контроллеров.
Выполнение запроса Umbraco
Во время выполнения запроса Umbraco вызывается метод действия MVC, который выполняет обработку представления Razor для отображения контента конечному пользователю.
Использование модели
Всякий раз, когда элемент контента отображаются конечному пользователю, он основан на модели типа
IPublishedContent. Эта модель содержит всю информацию о контенте, который связан с текущим запросом.
Если вы работаете с методом пользовательского контроллера, модель типа
RenderModel будет доступна через параметр метода. Эта модель содержит экземпляр IPublishedContent, который вы сможете использовать.
Когад вы работаете с представлением типа
UmbracoTemplatePage (который является типом представления по умолчанию), Model в этом представлении будет так же типа RenderModel и реализовывать IPublishedContent. Например, чтобы отобразить имя текущей модели контента можно написать следующее:@Model.Content.Name
Все страницы представлений в Umbraco наследуются от
UmbracoViewPage<TModel>. А если вы хотите, чтобы ваша модель была просто IPublishedContent, нужно изменить тип представления на UmbracoViewPage<IPublishedContent>, и представление будет работать не проблем даже если контроллер передаст в него модель типа RenderModel.IPublishedContent
IPublishedContent это стандартная модель, используемая для всего контента, медиа и пользователей в Umbraco. Это строго типизированная модель, но в то же время очень гибкая. Более подробное описание можно найти в последующих разделах.
DynamicPublishedContent
Существует так же динамическое представление
IPublishedContent,которое называется DynamicPublishedContent. Оно доступно в UmbracoTemplatePage как @CurrentPage. Работать с динамическим представлением в некоторых случаях проще, например, в случае с данными свойств. Например, чтобы отобразить пользовательское свойство 'markDown', нужно написать:@CurrentPage.markDown
Однако, при работе с динамическими представлениями нельзя использовать автодополнения Intellisense, т.к. компиляция происходит во время исполнения (runtime). Более подробное описание можно найти в последующих разделах.
UmbracoHelper
UmbracoHelper предоставляет универсальный способ работать с контентом и медиа. Будь то MVC или WebForms можно использовать UmbracoHelper для работы контентом Umbraco. Более подробное описание можно найти в последующих разделах.
MembershipHelper
MembershipHelper основной класс для доступа к данным Asp.net Membership и к данным пользователей в Umbraco, которые представлены в формате контента и медиа Umbraco. Более подробное описание можно найти в последующих разделах.