This article has been localized into Italian by the community.
Actions
Siccome un Controller è una normalissima classe .NET, può avere campi, proprietà e metodi. I metodi di un Controller sono particolarmente interessanti, perchè rappresentano la connessione tra il browser (e quindi l'utente) e la vostra applicazione. Per questa ragione, ci si riferisce ai metodi di una classe Controller come Actions (Azioni) - un metodo corrisponde solitamente ad una azione nella vostra applicazione la quale ritorna qualcosa al browser/utente.
Poichè un browser funziona chiamando un URL, è necessario qualcosa che traduca gli URL in una chiamata ad un metodo di un Controller. Per esempio, il browser potrebbe richiedere un URL come /products/1/ e quindi vorreste che il vostro ProductsController gestisca questa richiesta tramite un metodo/azione chiamato Details. Questo è gestito dal sistema di Routing e di cui dobbiamo ancora parlare in questa guida, ma per il momento sappiate che il Routing è ciò che connette gli URL alle azioni definite nel vostro Controllers.
Quando create i vostri Controllers, tenete in mente che tutti i metodi pubblici di una classe Controller sono considerati delle Actions. Questo significa che se avete definito una regola di routing che cattura tutte le possibili combinazioni di URL per il vostro Controller (ed è una cosa piuttosto comune), allora tutti i metodi nella vostra classe Controller possono essere raggiunti utilizzando un URL. Pertanto se avete dei metodi nel vostro Controller che non volete che siano chiamati da un utente finale, accertatevi di averli marcati come private. Come alternativa, se avete realmente bisogno di un metodo pubblico ma non accessibile tramite un URL, potete marcare il metodo con l'attributo [NonAction].
Action Verbs
Per avere maggior controllo su come le vostre Actions vengono richiamate, potete decorarle con i cosidetti Action Verbs. Questi in effetti sono normali attributi .NET che informano il framework di come una azione può essere richiamata. Senza questi attributi, una azione potrebbe essere utilizzata con qualsiasi metodo HTTP (i più popolari sono GET e POST), ma potete cambiare questa situazione piuttosto facilmente:
[HttpGet]
public IActionResult Edit()
{
return Content("Edit");
}
Con questa modifica l'azione Edit può essere utilizzata sono da una richiesta GET. Questo ha il beneficio aggiuntivo di permettervi di avere molti metodi con lo stesso nome purchè non accettino lo stesso metodo di richiesta. Quindi, per esempio, potreste avere due metodi chiamati Edit: il primo sarà disponibile per le richieste GET e generare il FORM per editare un elemento, mentre il secondo sarebbe disponibile solo per le richieste POST e utilizzato per aggiornare l'elemento quando il FORM viene reinviato al server. Potrebbe assomigliare a questo:
[HttpGet]
public IActionResult Edit()
{
return View();
}
[HttpPost]
public IActionResult Edit(Product product)
{
product.Save();
return Content("Product updated!");
}
Adesso, quando viene fatta una richiesta all'azione Edit() il vero metodo utilizzato per rispondere alla richiesta sarà selezionato in base al fatto che si tratti di una richiesta GET o POST.
In situazioni particolari, potreste voler specificare Action Verbs multipli, per esempio se volete specificare che una azione può essere utilizzata sia da richieste POST che da richieste GET ma non da altri tipi di richiesta. Allora potrete scrivere semplicemente:
[HttpGet]
[HttpPost]
public IActionResult Edit()
{
...
Riepilogo
Abbiamo imparato qualcosa su una dei più importati aspetti di un Controller. Le Actions. A volte chiamate metodi di azione oppure semplicemente metodi perchè, alla fine dei conti, è effettivamente quello che sono. Nel prossimo articolo discuteremo dei risultati delle Actions, chiamati Action Results.