TOC

This article has been localized into Hungarian by the community.

Vezérlők:

Akciók

Mivel egy vezérlő olyan, mint egy általános .NET osztály, ezért lehetnek mezői, tulajdonságai és metódusai is. Egy vezérlő metódusai különösen fontosak, mivel ezek szolgálnak összeköttetésül a böngésző (ezáltal a felhasználó) és az alkalmazás között. Emiatt a vezérlő osztály metódusaira akcióként (action) hivatkozunk - egy metódus általában az alkalmazásod egy akciójához kötődik, ami valamit visszatérít a böngészőnek/felhasználónak.

Mivel egy böngésző URL-ek segítségével működik, szükséged van valamire ami lefordítja az URL-eket a megfelelő vezérlő megfelelő akciójára (metódusára). A böngésző kérhet például egy URL-t, mint /products/1/ - ez esetben azt szeretnéd ha a ProductsController kezelné ezt a kérést a benne lévő Details metódussal. Ez a routing (útválasztás) nevű technikával oldható meg, amiről más helyen még beszélni fogunk, egyelőre legyen elég annyi, hogy a routing köti az URL-eket a vezérlőid akcióihoz.

Amikor vezérlőket írsz, tartsd észben hogy minden publikus metódus a vezérlőn akciónak van tekintve. Ez azt jelenti hogy ha mindent fogó útválasztási szabályokat állítottál be routing gyanánt (ami bevett gyakorlat), akkor elméletben vezérlőd minden metódusát el lehet érni valamilyen URL-el. Szóval ha olyan metódusod van a vezérlődön, amihez nem akarod, hogy a felhasználó hozzáférhessen, akkor mindenképp private-ként jelöld azt. A másik lehetőség, ha mindenképp publikus metódusra van szükséged amihez URL-en keresztül nem lehet hozzáférni, hogy megjelölöd a metódust a [NonAction] attribútummal.

Akciószavak

Hogy nagyobb irányításod legyen afelett, hogyan és mikor vannak az akciók végrehajtva, jelölheted úgynevezett akciószavakkal (action verbs) őket. Ezek általános .NET attribútumok, amik jelzik a .NET keretrendszer felé, hogyan lehet egy akcióhoz hozzáférni. Ezek nélkül egy akció bármely HTTP metódussal elérhető (a leggyakrabbi a GET és a POST), de ezen könnyen változtathatsz:

[HttpGet]
public IActionResult Edit()
{
return Content("Edit");
}

Ezzel az Edit akció csak egy GET kéréssel hozzáférhető. Ez azzal plusz előnnyel jár, hogy több metódusod is lehet ugyanazzal a névvel, amíg azok nem ugyanazt a hozzáférési módot támogatják. Például lehet két Edit nevű metódusod: az egyik a GET kéréseket támogatja és egy űrlapot generál valamilyen elem szerkesztésére, míg a másik csak POST kéréseket fogad el és frissít egy elemet a beérkező űrlap alapján. Így nézhet ez ki:

[HttpGet]
public IActionResult Edit()
{
return View();
}

[HttpPost]
public IActionResult Edit(Product product)
{
product.Save();
return Content("Product updated!");
}

Ezzel bármikor kérés érkezik az Edit() metódusra/akcióra, a ténylegesen válaszoló metódus attól fog függeni, hogy GET vagy POST kérés érkezett-e be.

Bizonyos helyzetekben több akciószót is szeretnél megadni, például ha azt szeretnéd, hogy egy akciót GET és POST kérések is elérjenek, de mások nem. Ez szintén könnyű:

[HttpGet]
[HttpPost]      
public IActionResult Edit()
{
...

Összefoglaló

Ebben a cikkben a vezérlők egyik legfontosabb részét tekintettük át: az akciókat, amelyekre olykor akció metódusként, vagy csak metódusként is hivatkozunk, mivel alapvetően az akciók csupán metódusok. A következő cikkben tárgyaljuk ezek eredményét, melyeket akcióeredménynek nevezünk (action results).

This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!