Как используются параметры метода действия?



Әрекет тәсілдері URL сұраныстарын өңдейтін контроллердің тәсілдері болып табылады.

Сұраныс түрлері әртүрлі бола алады, мысалы, GET немесе POST.Фреймворк ASP.NET MVC сұраныс типін анықтау үшін оған сәйкесінше аттрибут қолданылады: [HttpGet], [HttpPost], [HttpDelete] немесе [HttpPut].

[HttpPost]

public string Buy(Purchase purchase)

{

db.Purchases.Add(purchase);

db.SaveChanges();

return "Рахмет, " + purchase.Person;

}

Жоғарыда көрсетілген POST сұраныс. Мұнда Purchase параметрі қолданылған. Бізде модельде берілген мәліметтер мен формадағы мәліметтер бірдей болуы тиіс.

Мысалы,модель төмендегідей болса:

Class Purchase{

Public int BookId{get;set;}

Public string Person{get;set;}

Public string Adress{get;set;}

}

Онда форма төмендегідей болуы керек.

<form method=”post” action=””>

<input type=”hidden” value=”@ViewBag.BookId” name=”BookId” />

<p>Есімі:</p>

<input type=”text” name=”Person” />

<p>Мекен-жай:</p>

<input type=”text” name=”Adress” />

<input type=”submit” value=”Жіберу” />

</form>

Яғни, модельде бар барлық қасиеттер аты мен формадағы аттар бірдей болуы керек, сол кезде MVC аттарды бір біріне сәйкестендіре алады.Buy тәсілі автоматты түрде форма мен модельді сәйкестіндіреді.

Post сұраныстан басқа Get сұраныстар да бар.Ол кезде параметрлер сұраныс жолында беріледі(в строке запроса). Мысалы,public ActionResult Buy(int id) тәсілін анықтайық.

Стандартты get сұраныс келесі фомада жазылады:

РесурсАты?параметр1=мәні&параметр2=мәні

Buy(int id) тәсілін шақыру үшін келесідей жолды жазуымыз керек: Home/Buy?id=2

Тәсілдің параметрлерінің аттары сұраныс жолындағы параметр аттарымен сәйкус келуі тиіс.Сол арқылы система параметрлерді бір біріне сәйкестіндіре алады. Тәсілде сол параметрлерді алып, қалағанымызша қолдана аламыз.

Сонымен қатар маршрутизация арқылы өзіміз маршрут қоса аламыз. Mvc-да үнсіз келісім бойынша келесі маршрут бар:Контроллер/Тәсіл/параметр. Бұл кезде Buy(int id) тәсілін  келесі түрде шақара аламыз:Home/Buy/2

Мысалы үшбұрыш ауданың есептейтін тәсіл:

public string Audan(int a,int h)

{

double s=a*h/2;

return “табаны:”+a+” биіктігі:”+h+” үшбұрыштың ауданы:”+s;

}

Бұны келесі түрде шақыра аламыз:Home/Audan?a=10&h=3.Осылай шақырсақ программа үшбұрыштың ауданың есептеп береді.

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

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

Мысалы, HTML жауап жіберу үшін HTML деректерін жасау және жасау керек, содан кейін оны Response.Write () әдісін пайдаланып клиентке жіберу керек. Сол сияқты, пайдаланушының шолғышын басқа URL мекенжайына бағыттау үшін, Response.Redirect () әдісіне қоңырау шалып, оған қажетті URL мекенжайын беру керек. Екі әдіс төмендегі мысалда көрсетілген кодта көрсетіледі, ол IController интерфейсін енгізу арқылы алдыңғы мақалалардың бірінде жасаған BasicController сыныбының кеңейтімдерін көрсетеді:

using System.Web.Mvc;

using System.Web.Routing;

Namespace ControllersAndActions.Controllers

{

public class BasicController : IController

{

   public void Execute(RequestContext requestContext)

   {

       string controller = (string)requestContext.RouteData.Values["controller"];

       string action = (string)requestContext.RouteData.Values["action"];

       if (action.ToLower() == "redirect")

       {

           requestContext.HttpContext.Response.Redirect("/Derived/Index");

       }

       else

       {

           requestContext.HttpContext.Response.Write(

               string.Format("Контроллер: {0}, Метод действия: {1}",

               controller, action));

       }

   }

}

}

Осындай көзқарас контроллердің мұрагері болған жағдайда пайдаланылуы мүмкін. RequestContext.HttpContext.Response сипатын Execute () әдісінде оқылған кезде, HttpResponseBase класы Controller.Response сипаты арқылы қол жетімді, төмендегі мысалда көрсетілгендей, DerivedController сыныбының кеңейтімдерін, сондай-ақ, контроллер сыныбынан мұрагерлік арқылы жасаған кезде қайтарылады:

using System;

using System.Web;

using System.Web.Mvc;

 


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

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






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