ПредишенСледващото

Всяка заявка подадена заявката се обработва от контролера. Контролерът може да придвижи искането по произволен начин, стига да не преминава границата на модел отговорност и на гледката. Това означава, че администраторите не трябва да съдържат или хранилище за данни, както и да не се генерира потребителски интерфейси.

инфраструктурни ASP.NET MVC Рамкови Контролерите са класове .NET, които съдържат логиката, необходима за обработване на искането. роля контролер е за капсулиране на логиката на приложението. С други думи, контролерите са отговорни за обработка на входящи заявки, да извършват операции по модел на домейна и различните оценки за визуализиране на потребителя.

примерни приложения

За целите на тази и следващите членове, ние ще създадем нов проект MVC нарича ControllersAndActions Употребата на празен шаблон (Blank), отбелязвайки, MVC кутия в Добавяне на папки и основни препоръки за добавки (папки и основни връзки), както и в проекта тестване единица, наречени ControllersAndActions .Tests. Единичните тестове, които ще бъдат създадени, симулирани приложения не изискват толкова MOQ пакет не трябва да се инсталира, но вие трябва да инсталирате пакета MVC, че тестовете имат достъп до основния клас контролер.

В Visual Studio среда Мениджър на пакети конзола NuGet, въведете следната команда:

Концепцията на контролер

Създаване на контролера чрез интерфейс IController

MVC Рамкови контролери Класовете трябва да прилагат интерфейса на космически имена IController System.Web.Mvc. е показано в примера по-долу:

За да получите по дефиниция на интерфейса, трябва да изтеглите изходния код на MVC Framework. която е изключително полезна за намиране на вътрешната изработки на инфраструктурни фондове.

Както можете да видите, IController интерфейс е много проста. Неговото Изпълнение само () метод се нарича, когато се изпраща заявка към класа на контролер. MVC Framework инфраструктура разбере кой клас е насочена разследване, поради четене контролер на пазарната стойност на имота, генерираната информация за маршрутите или маршрутизиране чрез специални класове.

Създаване на контролера класове могат да бъдат постигнати чрез прилагане IController интерфейс, но тъй като това е интерфейс на ниско ниво, което трябва да направите много работа, за да получите в края на краищата, нещо полезно. Въпреки това, интерфейсът е приложим за показване IController работещи контролери и за тази цел, Контрольори папка, създайте нов файл с име клас BasicController.cs, съдържанието на които е показано в примера по-долу:

Метод Изпълнение () IController интерфейс се предава RequestContext обект. предоставяне на информация за текущата заявка и по маршрута, който съответства на това (и това води до по-контролер покана за обработката на тази заявка). две свойства, описани по-долу са определени в Таблица RequestContext клас:

Имоти, определени от клас RequestContext

Взима колекция от стойности на сегментите, индексиран от име

В Конфигуриране маршрута Системата е показано как да се използва за видовете и RouteBase IRouteHandler за конфигуриране на системата за маршрутизация. В този пример, използването Характеристичните стойности, получени контролер и действие променливи сегменти, които след това са написани обратно.

Част от проблема, който възниква, когато създавате специални контролери, свързани с липсата на достъп до такива средства, като презентация. Това означава, че трябва да се работи по-ниско ниво, и това обяснява съдържанието на запис директно в отговор на клиента. HttpContextBase.Response собственост връща HttpResponseBase обект. който ви позволява да конфигурирате и добавете съдържание на отговора се изпраща на клиента. Това е още една точка на контакт между платформата и инфраструктурата ASP.NET MVC Framework.

Ако стартирате приложението и отидете на адреса на формата / Basic / Index, специалната контролера генерира изходен е показано на фигурата по-долу:

MVC 5 контролери

Изпълнение IController интерфейс ви позволява да създадете клас, който MVC Framework разпознава контролера и го изпраща заявка, без никакви ограничения по отношение на това как се обработва искането, и се генерира отговор за това. Това е един добър пример, защото показва колко може да бъде разширяем MVC Framework инфраструктура дори и за основните градивни елементи, като контролери, но писането на сложни приложения по този начин може да бъде изпълнено с трудности.

Класове с имена, завършващи на Base

При обработката на заявки за MVC Framework инфраструктура разчита на платформата ASP.NET, което прави голям смисъл, защото Тази платформа е доказан и богат на функции изпълнение, които са силно интегрирани в сървър на приложения IIS. Проблемът е, че класовете, използвани от платформата ASP.NET да предостави информация за заявките не са много подходящи за единица тестване - основните предимства на използването на MVC Framework.

В Microsoft реши да въведе възможност за тестване, като същевременно се поддържа съвместимост със съществуващите приложения, ASP.NET уеб форми, в резултат на което се появява базови класове. Тези класове са така наречените, защото те имат същите имена като тези на основния класове ASP.NET платформа, следван от една дума Base.

Например, ASP.NET платформа осигурява контекстуална информация за текущата заявка, както и редица ключови услуги за кандидатстване с обекта HttpContext. База съответния клас е HttpContextBase, копие от който се предава на Execute (), дефинирана в IController интерфейс (и другите базови класове ще бъде демонстриран в следните примери). В оригиналния класа и базата клас са определени същите свойства и методи, но класовете основата винаги абстрактно. което означава, че те са лесни за използване за единица тестване.

Понякога можете да получите копие на един от най-оригиналните класове ASP.NET, като HttpContext. В този случай, трябва да се създаде приятелска клас Base MVC, като HttpContextBase. Това се прави с помощта на един от класа обвивка. които имат същите имена като оригиналните класове, допълнени от кратко обвивка, например, HttpContextWrapper. Обвивка класове са получени от базови класове и имат конструктори, които вземат копия на оригиналните класове:

Първоначалните класове, база и обвивка класове класове са определени в пространството от имена на System.Web, така ASP.NET платформа може плавно подкрепят MVC приложения рамка и по-големи уеб формуляри приложения.

Създаване на контролера поради наследството от класа на контролер

Както стана ясно в предишния пример, MVC Framework инфраструктура позволява почти неограничен персонализиране и разширение. За да се осигури всеки желан вид обработка на заявката и генериране на резултати могат да бъдат реализирани IController интерфейс. Вие не харесвате методите на действие? Вие не искате да се притеснявате за визуализират идеите? В този случай, можете да вземете нещата в свои ръце и да се реализират по-добре, по-бързо и по-елегантен начин да се справят с искания. Или можете да използвате възможностите, които предоставят рамката MVC от екипа за развитие на Microsoft, и да наследи техните контролери от System.Web.Mvc.Controller клас.

Контролер поведение разположени над множество методи (вместо прилагане един метод Изпълнение ()). Всеки метод на действие се показва на съответния URL и извиква с параметрите, извлечени от входящия искането.

Можете да се върнете един обект, който се описва в резултат на действието (например, визуализация представителство или пренасочване към друг URL или метод на действие), и след това го обработва по всякакъв начин. Разделянето на индикацията на резултатите и изпълнението им по-лесно тестване единица.

За многократна употреба поведение (например, удостоверяване) може да бъде капсулиран във формата на филтри и след това да се отбележи всеки аспект контролери поведение и действие методи за използване на атрибута в изходния код.

Освен ако не сте се занимават с конкретно изискване, най-добрият подход за създаването на контрольорите ще бъде наследството им от клас контролер софтуер, който, както може да се очаква, прави Visual Studio среда при създаването на нов клас, в отговор на избор на позиция за добавяне на меню -> скеле (Add -> Template).

В примера по-долу е прост контролер код, наречен DerivedController, създаден по този начин. Той се генерира с помощта на примерно изпълнение 5 MVC контролер - Празен (MVC контролер 5 - празна проба) с няколко прости модификации, предназначени за монтиране ViewBag свойства и избора на представяне:

Контролер клас осигурява връзка с System Razor отчитане. В този пример, ние се върне в резултат на повикване метод View (), която се предава като параметър, за да направи името на изглед към клиента. За да създадете тази гледна точка, да създавате Прегледи / Извлечен папка, щракнете с десния бутон на мишката и кликнете върху елемента, за добавяне на меню -> 5 MVC View Page (Razor) (Add -> Page 5 на MVC (Razor)). Посочете като име MyView.cshtml и натиснете ОК, за да създадете презентация файла.

Довежда се съдържанието на файла, в съответствие с един пример:

След стартиране на приложението и отидете на URL адреса на форма / Извлечен / Индексът на този метод действие е задействана и MyView на оглед се визуализира:

MVC 5 контролери

Свързани статии

Подкрепете проекта - споделете линка, благодаря!