Какая роль отводится контроллеру при извлечении исходных данных в приложении, созданного по технологии ASP.NET MVC?



Контроллер жиі кіріс сұрауынан, мысалы, сұрау жолының мәндерінен, пішін мәндерінен және маршруттау жүйесі арқылы URL мекенжайынан алынатын параметрлерден қатынауы керек. Мұндай деректерге қол жеткізудің үш негізгі жолы бар:

· контекстік нысандардың жиынтығынан деректерді алу;

· деректерді беру әрекеті әдісіне параметрлер ретінде;

· міндетті инфрақұрылымдық модельдердің құралдарына нақты сілтеме жасау.

Базалық класс Controller мұрагерлік жасау арқылы контроллерді жасаған кезде, сұрауыңызға қатысты ақпаратқа қол жеткізу үшін ыңғайлы қасиеттер жиынтығын аласыз. Бұл сипаттар Request, Responce, RouteData, HttpContext және Server қамтиды. Тізімделген әрбір мүлік сұраудың белгілі бір аспектісі үшін жауап береді. Біз оларды ыңғайлы қасиеттер деп атаймыз, себебі олардың әрқайсысы сұрау үшін ControllerContext данасынан деректердің нақты түрін шығарады (Controller.ControllerContext сипаты арқылы қол жетімді).

Көріністі көрсету үшін контреллер View әдісі пайдаланылады пайдаланылады. Деректерді көрініске беру үшін, ViewPath сыныптың ViewData сипатын пайдаланыңыз. Бұл сипат регистрді ескеретін жол кілттері бар ViewDataDictionary нысанын қайтарады. Деректерді көрініске беру үшін, төмендегі мысалда көрсетілгендей, деректерді сөздікке жазуға болады:

List<string> petList = new List<string>();

petList.Add("Dog");

petList.Add("Cat");

petList.Add("Hamster");

petList.Add("Parrot");

petList.Add("Gold fish");

petList.Add("Mountain lion");

petList.Add("Elephant");

ViewData["Pets"] = new SelectList(petList);

Егер View әдісі параметрлері жоқ (мысалы, алдыңғы мысалда) шақырылса, контроллер нысанының ViewData сипаты әрекет әдісі сияқты атауға ие көрініске беріледі.
Көрініс бетінде көрініске жіберілген деректерді алу үшін ViewData сипатына қатынасуға болады. ViewData сипаты сөздік пернелерін қабылдайтын индекстерді қолдайтын сөздік.

Перечислите некоторые часто используемые объекты контекста.

Базалық класс контроллерінен мұрагерлік жасау арқылы Controller-ді жасаған кезде, сұрауыңызға қатысты ақпаратқа қол жеткізу үшін ыңғайлы қасиеттер жиынтығын аласыз. Бұл сипаттар Request, Response, RouteData, HttpContext және Server-ді қамтиды. Тізімделген әрбір мүлік сұраудың белгілі бір аспектісі үшін жауап береді. Біз оларды ыңғайлы қасиеттер деп атаймыз, себебі олардың әрқайсысы сұрау үшін ControllerContext данасынан деректердің нақты түрін шығарады (Controller.ControllerContext сипаты арқылы қол жетімді).

Ең жиі қолданылатын мәтінмән объектілері мен сипаттары төмендегі кестеде сипатталған:

Request.QueryString          NameValueCollection Осы сұрау арқылы жіберілген айнымалы мәндерді GET
Request.Form              NameValueCollection Бұл сұраныспен жіберілетін POST айнымалы мәндері
Request.Cookies             HttpCookieCollection Осы сұрау арқылы браузер жіберген cookie файлдары
Request.HttpMethod          string Бұл сұрау үшін HTTP әдісі (GET немесе POST сияқты пәрмен) қолданылады
Request.Headers             NameValueCollection Бұл сұраныспен жіберілген HTTP тақырыптарының толық жиынтығы
Request.Url        Uri    Осы сұрау үшін таңдалған RouteTable.Routes элементі
Request.UserHostAddress         string         Бұл сұрауды жасаған пайдаланушының IP адресі
RouteData.Route            RouteBase Бұл сұрауға арналған Routetable.Routes элементі
RouteData.Values           RouteValueDictionary Белсенді маршрут параметрлері (URL немесе стандартты мәндерден алынған)
HttpContext.Application                   HttpApplicationStateBase Қолданбаның күйін сақтау
HttpContext.Cache          Cache Қолданба кэшті сақтау орны
HttpContext.Items          IDictionary Ағымдағы сұраныс үшін
HttpContext.Session          HttpSessionStateBase Келушілерге арналған
User           IPrincipal Тіркелген пайдаланушы туралы аутентификация туралы ақпарат
TempData           TempDataDictionary Ағымдағы пайдаланушы үшін сақталған уақытша деректер элементтері

 

Әрекет әдісі төмендегі мысалда көрсетілгендей сұрау туралы ақпаратты алу үшін осы контекстік нысандардың бірін қолдана алады:

ASP.NET Web Forms

using System;

using System.Web;

using System.Web.Mvc;

namespace ControllersAndActions.Controllers

{

public class DerivedController : Controller

{

   public ActionResult Index()

   {

       // ...

   }

 

   public ActionResult ActionMethod()

   {

       // Мазмұн нысандарынан әртүрлі сипаттарға қол жеткізіңіз

       string userName = User.Identity.Name;

       string serverName = Server.MachineName;

       string clientIP = Request.UserHostAddress;

       DateTime dateStamp = HttpContext.Timestamp;

       // Request.Form ішінен жіберілген деректерді шығарып алыңыз

       string oldProductName = Request.Form["OldName"];

       string newProductName = Request.Form["NewName"];

       // ...

       return View();

   }

}

}

Сұраудың мәтінмәні туралы қол жетімді ақпараттың үлкен ауқымын зерттеу үшін IntelliSense құралын пайдаланыңыз (жұмыс әдісінде, оны теріңіз және қалқымалы терезеде ақпаратты көріңіз) және Microsoft Developer Network (System.Web.Mvc.Controller класының құжаттамасын және оның негізгі сипаттарын немесе System.Web.Mvc.ControllerContext класы).


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

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






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