This article has been localized into Hungarian by the community.
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).