Nel caso in cui un'azione non restituisca come risultato una vista ma un redirect ad un'altra azione sorge il problema di come trasferire dati tra le due azioni, dato che questa operazione comporta una nuova richiesta al server da parte del client che viene reindirizzato.
ASP.NET MVC mette a disposizione dello sviluppatore una proprietà dedicata, TempData
. Questa è dichiarata come un dizionario (cioè un insieme di coppie chiave-valore) i cui valori vengono però temporaneamente memorizzati in variabili di sessione.
Queste variabili hanno tuttavia una vita breve in quanto vengono distrutte automaticamente alla richiesta successiva.
public ActionResult Index() { // Aggiungo una stringa all'interno di TempData TempData["Errore"] = "Attenzione! Si è verificato un errore."; // Reindirizzo l'utente all'azione Error return RedirectToAction("Error"); } public ActionResult Error() { // Estraggo la stringa da TempData... string errore = TempData["Errore"] as string; // ...e uso l'errore in qualche modo return View(errore); }
L'azione Index
del listato precedente inserisce nel TempData
un messaggio di errore, che viene successivamente utilizzato dall'azione Error
a cui l'utente viene reindirizzato. Come vedremo, è possibile accedere alla collection TempData
anche dalle viste, caratteristica che rende questa funzionalità particolarmente interessante.