This article has been localized into Hungarian by the community.
Űrlapok (POST adat)
Az előző cikkben megvizsgáltuk, mi az a query string és hogyan olvashatunk be belőle paramétereket. Ez többnyire egy úgynevezett GET kérés során történik, ami többnyire akkor keletkezik, amikor a felhasználó beüt egy URL-t a böngészőjébe vagy rákattint egy linkre. A GET kérés ellenpárjaként létezik a POST kérés. Egy POST kérés általában akkor történik, amikor a felhasználó egy űrlapot (FORM-ot, például kapcsolattartási űrlapot vagy bejelentkezési űrlapot) küld be. Ellentétben a GET kéréssel, ahol a bejövő adat látható a URL-ből, a POST kérés során nincs a felhasználó számára is látható információ. Emiatt a HttpContext osztály másik tulajdonságát kell használnunk POST adathoz való hozzáféréskor: a Form tulajdonságot.
ASP.NET MVC-ben az űrlapokat leggyakrabban úgy kezeljük, hogy hozzákötjük a modellt. Ez azt teszi, hogy az űrlap minden mezője egy modellen lévő tulajdonsághoz van kötve, ezzel az űrlap nem csak olvasni, de írni is tudja azt, amikor a felhasználó beküldi az űrlapot. Ezt modellkötésnek nevezzük, és máshol taglaljuk ezt, ebben a cikkben régimódian fogunk az űrlapadatokhoz hozzáférni.
Hozzáférés űrlapadathoz
A Form tulajdonság sok tekintetben úgy működik mint a Query tulajdonság - egyfajta szótárként szolgál, kulcsokkal és értékekkel. Amikor egy POST kérés jön be a vezérlőbe, például űrlap beadása esetén, minden beérkező mező hozzáadódik a Form szótárhoz. Itt a mezők neve a kulcs, azok értéke pedig a kulcshoz tartozó értékké válik. Ezt szeretném egy példával illusztrálni:
<form method="post" action="/Home/FormsTestPost">
<label for="txtName">Your name:</label>
<input type="text" id="txtName" name="UserName" />
<label for="txtAge">Your age:</label>
<input type="number" id="txtAge" name="UserAge" />
<button type="submit">Submit</button>
</form>
Ez egy egyszerű HTML űrlap. Láthatod, hogy a method tulajdonságot POST-ra állítom - az űrlapok támogatják a GET kéréseket is, de szinte mindig jobb a POST lehetőséget használni.
A vezérlőm ezúttal így néz ki:
public class HomeController : Controller
{
[HttpGet]
public IActionResult FormsTest()
{
return View();
}
[HttpPost]
public IActionResult FormsTestPost()
{
return Content("Hello, " + HttpContext.Request.Form["UserName"] + ". You are " + HttpContext.Request.Form["UserAge"] + " years old!");
}
}
Az Form szótár értékeihez a nevük használatával tudok hozzáférni (UserName és UserAge, ugyanúgy, ahogy a mezőket is neveztem az űrlapon).
Összefoglalás
A HttpContext osztálynak és Form tulajdonságának köszönhetően az űrlap/POST adatok könnyen hozzáférhetőek ASP.NET MVC-ben. Használata többnyire nem szükséges a modellkötésnek hála, de pár esetben azért hasznos lehet.