Какая роль отводится контроллеру при извлечении исходных данных в приложении, созданного по технологии 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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!