Intr-un post anterior am discutat putin despre ViewBag.
Sa vedem ce se intampla daca il folosim in urmatorul mod:
O solutie destul de simpla este sa folosim TempData, care persista intre doua actiune. TempData se poate folosii cu success cand dorim sa trimitem date intre requestul current si urmatorul. Durata de viata a obiectelor din TempData, o sa fie pana la urmatorul redirect (inclusiv). Dupa momentul respective aceste date se pierd. Valoriile din TempData sunt tinute pe sesiune intre actine curenta si urmatorea actiune accesata printr-un redirect.
Sa vedem ce se intampla daca il folosim in urmatorul mod:
public ActionResult Index()
{
…
ViewBag.Error = “some error”;
return RedirectToAction(“Error”,”Home”);
}
In cazul in care o sa dorim in actiune Error din controlerul Home sa accesam ViewBag.Error, o sa observam ca acesta este null. Informatile din ViewBag sunt pierdute in momentul in care se face un RedirectToAction. O solutie destul de simpla este sa folosim TempData, care persista intre doua actiune. TempData se poate folosii cu success cand dorim sa trimitem date intre requestul current si urmatorul. Durata de viata a obiectelor din TempData, o sa fie pana la urmatorul redirect (inclusiv). Dupa momentul respective aceste date se pierd. Valoriile din TempData sunt tinute pe sesiune intre actine curenta si urmatorea actiune accesata printr-un redirect.
public ActionResult Index()
{
…
TempData.Error = “some data”;
return RedirectToAction(“Error”,”Home”);
}
Nu e mai elegant in astfel de cazuri sa folosesti cel de al 3-lea parametru al RedirectToAction - routeValues ? (normal, cand "parametrul" e ceva de mici dimensiuni, de ex. id-ul erorii intr-o tabela cu resurse localizate)
ReplyDelete