С помощью каких инструментов создается движок представления? Какие методы при этом используются?



MVC Framework включает в себя два встроенных движка представлений, полнофункциональных и тщательно протестированных:

· Движок Razor, который мы уже использовали в этой книге, появился в третьей версии MVC. У него простой и удобный синтаксис, который мы рассмотрели в главе 5.

· Движок ASPX, также известный как движок представлений Web Forms, использует синтаксис тегов Web Forms <% ...%>. Этот движок используется для поддержки совместимости в старых приложениях MVC.

Весь смысл создания пользовательского движка представлений состоит в том, чтобы с его помощью продемонстрировать работу конвейера обработки запросов и дополнить ваши знания об устройстве MVC Framework. Вы сможете оценить, какой гибкостью обладает процесс преобразования объектов ViewResult в ответ клиенту. Движки представлений реализуют интерфейс IViewEngine

namespace System.Web.Mvc

{

public interface IViewEngine

{

ViewEngineResult FindPartialView(ControllerContext controllerContext,

string partialViewName,

bool useCache);

ViewEngineResult FindView(ControllerContext controllerContext,

 string viewName,

string masterName,

bool useCache);

void ReleaseView(ControllerContext controllerContext, IView view);

}

}

Задача движка представлений заключается в преобразовании запросов к представлениям в объекты ViewEngineResult. Первые два метода в интерфейсе, FindView и FindPartialView, принимают параметры, в которых указывается запрос и обработавший его контроллер (объект ControllerContext), имя представления и его макет, а также сообщение о том, может ли движок представлений использовать предыдущий результат из кэша. Эти методы вызываются во время обработки ViewResult. Последний метод, ReleaseView, вызывается, когда представление больше не требуется.

Каким образом происходит приведение в действие механизма визуализации результатов запроса? Опишите последовательность действий движка представления.

Создания специального механизма визуализации заключается в демонстрации функционирования конвейера обработки запросов и завершении описания работы ASP.NET MVC Framework. Это также предполагает понимание того, насколько большую свободу имеют механизмы визуализации при трансляции ViewResult в ответ, предназначенный клиенту. Механизмы визуализации реализуют интерфейс IViewEngine, который показан в примере ниже:

Namespace System.Web.Mvc

{

Public interface IViewEngine

{

   ViewEngineResult FindPartialView(ControllerContext ControllerContext,

       string partialViewName, bool useCache);

   ViewEngineResult FindView(ControllerContext ControllerContext,

       string viewName, string masterName, bool useCache);

   void ReleaseView(ControllerContext ControllerContext, IView view);

}

}

Роль механизма визуализации заключается в трансляции запросов к представлениям в объекты ViewEngineResult. Первые два метода в интерфейсе - FindPartialView() и FindView() - принимают параметры, которые описывают запрос и обрабатывающий его контроллер (объект ControllerContext), имя представления и его компоновку, а также признак того, разрешено ли механизму визуализации повторно использовать предыдущий результат из кеша. Эти методы вызываются во время обработки ViewResult. Последний метод - ReleaseView() - вызывается, когда представление больше не требуется.

Поддержка механизмов визуализации в MVC Framework реализована классом ControllerActionInvoker, который является встроенной реализацией интерфейса IActionInvoker. В случае реализации собственного активатора действий или фабрики контроллеров непосредственно из интерфейсов IActionInvoker или IControllerFactory автоматического доступа к средству механизмов визуализации не будет.

Как осуществить регистрацию клиентского движка представления? С помощью какого класса осуществляется регистрация движка представления?

Көріністе C # кодын пайдалану кезінде @ белгісін қолдандық. Бұл C # / VB.NET ішіндегі кодқа өту үшін Razor қарау механизмі пайдаланатын белгі. Разор қозғалтқышының мәнін және оның синтаксисін түсіну үшін, алдымен таныстыру механизмдерінің не екенін білейік.

Көрсетілім движоктары - имен Microsoft кеңістігінде анықталған IViewEngine интерфейсін іске асыратын сыныптар.

public interface IViewEngine

{

ViewEngineResult FindView(ActionContext context, string viewName, bool isMainPage);

ViewEngineResult GetView(string executingFilePath, string viewPath, bool isMainPage);

}

Жауапты өңдеуге көзқарас қажет болса, MVC көріністі қамтамасыз ететін көрсетілім движогынан GetView () әдісін шақырады. Егер GetView () әдісі ұсынысты бере алмаса, онда көріністі іздейтін FindView () әдісі шақырылады.

Екі әдіс бірдей ViewEngineResult класында анықталған статикалық әдістердің бірін жасай алатын жасау үшін ViewEngineResult нысанын ғана емес, көріністі қайтарады:

* Found(атау, көрініс): бұл әдіске қоңырау көріністі ViewEngineResult нысанының Көрініс сипаты арқылы орнатады, содан кейін сұрауды өңдеу үшін пайдаланылады

* NotFound (атау, орын): бұл әдісті шақыру MVC-ке көрініс табылмағанын айтады. Параметр ретінде, орынның мәні тасымалданады, ол қозғалтқыштың көрінісін іздейтін жолдардың санағын білдіреді.

Көрсетілім движогы IViewEngine интерфейсін жүзеге асырады. GetView () әдісінде қарап шығудың табылмағанын көрсететін ViewEngineResult функциясын қайтарыңыз. ViewEngineResult.NotFound әдісінде екінші параметр ретінде іздеудің орындалу жолын өту керек. Бұл жағдайда іздеу еш жерде орындалған жоқ, сондықтан массив бос.

Көрсетілім движогын ConfigureServices () әдісімен орнату үшін, MvcViewOptions нысанын пайдаланыңыз. MVC-де бірнеше көру қозғалтқыштары тек біреуін пайдалану үшін бір мезгілде қолданыла алады.

Razor - бұл Microsoft визуализация механизмін атау

нұсқасы MVC 3 және MVC 4 нұсқасында өзгертіліп жасалынған (бірақ өзгерістер көп болмады). Визуализация механизмі ASP.NET мазмұнын жасайды және құрылысын іздейді, олар әдеттегідей мазмұнды динамикалық мазмұнды енгізеді, жіберілетін брау-

зеру. В Microsoft екі визуализация механизмдерін қолдайды: ASPX механизмі, дескрипторлармен жұмыс жасайтын <% және%>, олар ASP.NET әзірлеуде негіз болды

Көптеген жылдар ішінде, және Razor механизмі бар, аудандармен контентпен байланысты, олар

символы арқылы көмек көрсетілді.

Үлкен шот бойынша, егер сізде <%%> синтаксисімен танысуыңыз болса,Бұл туралы Разормен сөйлесуге болады, бірақ осы механизмде бірнеше жаңа ереже бар.

Razor-дің қарапайым қойылуы:

@model Razor.Models.Product

 @{ Layout = null;

 

 


Дата добавления: 2018-02-15; просмотров: 487; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!