TOC

This article is currently in the process of being translated into Romanian (~72% done).

Controllers:

Actions (ro: Acțiuni)

Deoarece un Controller este doar o clasă .NET obișnuită, acesta poate avea câmpuri, proprietăți și metode. Cu atât mai mult metodele unei clase Controller sunt interesante, deoarece reprezintă conexiunea dintre browser (prin urmare, utilizatorul) și aplicația dvs. Din acest motiv metodele unei clase de Controller sunt denumite acțiuni - o metodă corespunde de obicei unei acțiuni din aplicația dvs., care apoi returnează ceva browserului/ utilizatorului.

Deoarece un browser funcționează apelând o adresă URL, aveți nevoie de ceva care traduce adresa URL într-un Controller și acțiune (metodă) corespunzătoare. De exemplu, browserul poate solicita o adresă URL precum /products/1/ și apoi doriți ca ProductsController-ul dvs. să gestioneze această solicitare cu o metodă/ acțiune numită Detalii. Acest lucru se realizează cu conceptul de rutare, despre care veți citi mult mai mult în alte părți din acest tutorial, dar deocamdată rețineți că Rutarea este ceea ce leagă URL-urile la acțiunile de pe Controller-ele dvs..

Atunci când creați Controller-ele dvs., rețineți că toate metodele publice dintr-o clasă de Controller-e sunt considerate o acțiune. Acest lucru înseamnă că, dacă ați definit reguli de rutare catch-all pentru Controller-ul dvs. (asta este un lucru obișnuit de făcut), toate metodele din clasa Controller a dvs. pot fi teoretic accesate folosind un URL. Prin urmare, dacă aveți metode pe Controller-ul dvs. pe care nu doriți ca utilizatorul final să le poată apela, asigurați-vă că îl marcați ca fiind privat. Ca alternativă, dacă aveți nevoie într-adevăr de o metodă pentru a fi publică, dar nu este accesibilă prin URL, puteți marca metoda cu atributul [NonAction].

Action Verbs (ro: Verbe de Acțiuni)

To gain more control of how your actions are called, you can decorate them with the so-called Action Verbs. These are in fact regular .NET attributes, which will tell the .NET framework how an action can be accessed. Without these attributes, an action can be accessed using all possible HTTP methods (the most common ones are GET and POST), but you can change that pretty easily:

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

Acum acțiunea Edit poate fi accesată doar cu un request GET. Aceasta adaugă beneficiul de a vă permite să aveți mai multe metode cu același nume, atâta timp cât acestea nu acceptă același atribut. Astfel, spre exemplu, ați putea avea două metode numite Edit: prima ar fi disponibilă pentru requesturi GET și ar genera un Formular pentru editarea unui articol, în timp ce a doua ar fi disponibilă pentru requesturi POST și ar fi folosită pentru a actualiza articolul când Formularul a fost postat înapoi la server. Ar putea arăta așa:

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

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

Acum de fiecare dată când un request este efectuat la metoda/acțiunea Edit(), metoda efectivă care va răspunde request-ului, va fi cea bazată pe tipul requestului dacă e un GET sau POST.

In some situations, you may want to specify multiple Action Verbs, e.g. to specify that an action can be accessed by both POST and GET requests but not other types. That's just as easy:

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

Summary

We have now learned more about one of the most important aspects of a Controller: The Actions, sometimes referred to as Action Methods or just methods, since that's what they basically are. In the next article we'll discuss the result of these actions, referred to as 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!