Namespace ControllersAndActions.Controllers. Public class ExampleController : Controller



{

Public class ExampleController : Controller

{

   // ...

Public HttpStatusCodeResult StatusCode()

   {

Ошибка 404 - URL не может быть обслужен

return new HttpStatusCodeResult(404, "Страница не найдена");

  }}}

HttpStatusCodeResult класы үшін конструктор параметрлері сандық күй коды және маңызды емес сипаттама хабары болып табылады. Бұл мысалда 404 код қайтарылды, яғни сұралған ресурс жоқ.

Нәтижені 404 кодпен жіберу

мысалдағыдай әсерге HttpStatusCodeResult-тен алынған ыңғайлы HttpNotFoundResult класының көмегімен қол жеткізуге болады және төмендегі мысалда көрсетілгендей, контроллердің қолайлы HttpNotFound () әдісімен жасалуы мүмкін:

Public HttpStatusCodeResult StatusCode()

{

Ошибка 404 - URL не может быть обслужен

returnHttpNotFound();}

Как осуществить генерацию ссылок на действия в областях?

Контроллер жиі кіріс сұрауынан, мысалы, сұрау жолының мәндерінен, пішін мәндерінен және маршруттау жүйесі арқылы 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 сипаты әрекет әдісісияқты атауға ие көрініске беріледі.
3.12Как осуществить перенаправление в приложении, созданного по технологии ASP.NETMVC?

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

Қайта бағыттау кезінде, браузер келесі екі HTTP кодтың бірін жібереді:

HTTP 302 коды

Уақытша қайта бағыттауды көрсетеді. Бұл қайта бағыттаудың ең жиі пайдаланылатын түрі.

HTTP 301 коды

Нақты URL мекенжайына қайта бағыттау

Браузерді қайта бағыттаудың ең негізгі жолы - төмендегі мысалда көрсетілгендей RedirectResult класының данасын қайтаратын контроллер класының Redirect () әдісін шақыру:

using System;

using System.Web.Mvc;

Namespace ControllersAndActions.Controllers

{public class ExampleController : Controller

{

Public RedirectResult Redirect()

{return Redirect("/Basic/Index");

   }}}

Қайта бағытталатын URL мекенжайы жол ретінде көрсетіліп, Redirect () әдісіне параметр ретінде берілді. Redirect () әдісі уақытша қайта бағыттауды қамтамасыз етеді. Тұрақты қайта бағыттау төмендегі мысалда көрсетілгендей RedirectPermanent () әдісі арқылы іске асырылуы мүмкін:

using System;

using System.Web.Mvc;

Namespace ControllersAndActions.Controllers

{

Public class ExampleController : Controller

{

   // ...

Public RedirectResult Redirect()

   {

return RedirectPermanent("/Basic/Index");

   }

}

}

Төменде қайта бағыттаудың сынау әдісі көрсетілген:

[TestMethod]

Public void ControllerTest ()

{

// Ұйым - контроллер жасау

ExampleController controller = жаңа ExampleController ();

// Әрекет - әрекет әдісін шақырады

RedirectResult нәтижесі = controller.Redirect ();

// Өтініш - нәтижені тексеріңіз

Assert.IsTrue (нәтиже.Permanent);

Assert.AreEqual («/ Basic / Index», result.Url);

}


Дата добавления: 2018-02-15; просмотров: 171;