This article has been localized into Hungarian by the community.
Akcióeredmények
Előzőleg az akciókról beszéltünk, amelyek a vezérlőn definiált metódusok. Akciók vannak végrehajtva amikor egy kért URL egy vezérlőn szereplő akcióhoz társul (utóbbit az útválasztó, vagy routing rendszer kezel). Amikor az akció (metódus) befejezte a munkáját, általában visszatérít valami a kliensnek, ez a valami pedig általában a IActionResult felületet valósítja meg (vagy a Task<IActionResult>-ot, ha a metódus aszinkron).
Ha a vezérlőd a beépített Controller alaposztályból ered (Microsoft.AspNetCore.Mvc.Controller), akkor számos segítő metódust kapunk a megfelelő válasz generálására (az akcióeredményre). Már használtunk egy ilyen metódust korábban: a View() metódust. Ez keres egy megfelelő nézetfájlt és készít belőle egy ViewResult példányt (ez az osztály megvalósítja az IActionResult felületet). Ezután ezt az objektumot az ASP.NET MVC böngészőnek való válasszá alakítja - ez esetben egy "OK" státuszkód, majd egy HTML test formájában.
Egy nézet közel sem az egyetlen lehetséges eredménye egy akciónak. Mivel az eredmény végül egy böngészőben fog kikötni, a rendelkezésünkre álló metódusok egy HTTP kérés minden lehetséges eredményét fedniük kell. Ezért egy akció eredményezhet természetesen átirányítást, 404-es kódot (oldal nem található), bármilyen más HTTP státuszkódot. A teljesség igénye nélkül itt egy lista a legérdekesebb és leghasznosabb akcióeredményeket teremtő metódusokról:
- Content() - visszatérít egy megadott stringet egyszerű szövegként a kliensnek (általában a böngészőnek)
- View() - visszatérít egy nézetet a kliensnek
- PartialView() - részleges nézetet térít vissza a kliensnek (erről később még szó lesz)
- File() - egy fájlt tartalmát téríti vissza a kliensnek
- Json() - JSON választ térít vissza a kliensnek
- Redirect() és RedirectPermanent() - átirányítási választ ad a böngészőnek (ideigleneset, illetve állandót/permanenset), amivel a felhasználó más URL-re van átirányítva
- StatusCode() - tetszőleges státuszkódot térít vissza a kliensnek
Ennél több is van, és persze sajátot is írhatsz, vagy magad is generálhatod a válaszokat - a fenti metódusok csupán új példányt készítenek a megfelelő osztályból és beállítják a megfelelő tulajdonságokat ezen a példányon. A Content() metódus például egy ContentResult példányt készít, majd azon a Content tulajdonsághoz rendeli az értéket, amit eredetileg a metódusnak adtál.
Sok más típusú válasz is létezik ami az IActionResult felületet megvalósítja, az akcióid pedig bármelyiket visszatéríthetik, a metódusod logikájától függően. Gyakran használjuk ezt a lehetőséget nézet vagy tartalom, illetve ha az nem található, akkor egy 404-es hibakód (oldal nem található) visszatérítésére. Ez így nézhet ki:
public IActionResult Details(int id)
{
Product product = GetProduct(id);
if (product != null)
return View(product);
return NotFound();
}
Az első sorban megpróbáljuk a kért tartalmat betölteni, a később megírandó GetProduct() metódus segítségével. Ha ez eredménnyel jár, akkor visszatérítjük nézeten belül a View() metódus segítségével - ha nem, akkor egy 404-es hibakódot adunk ki a NotFound() segédmetódus segítségével, ami lényegében egy NotFoundResult objektumot hoz létre. Ebben az esetben tehát két lehetséges kimenetele van az akciónak, de több is lehetne, ha szükséges - bármit visszatéríthetsz, ami az IActionResult felületnek eleget tesz.
Összefoglaló
Egy akció (Action) egy metódus egy vezérlőn (Controller), amit általában egy URL-el lehet elérni a routing rendszernek köszönhetően. Az akció általában egy akcióeredményt, Action Resultot eredményez, amely az IActionResult felületen alapszik. Sok segédmetódus is rendelkezésedre áll hogy a kívánt eredményt generáld akcióidban. Ezek a legfontosabb dolgok, amiket tudnod kell az ASP.NET MVC vezérlőkről. Későbbi fejezetekben már ennél részletesebb tudnivalókba fogunk belevágni.