Escrito por: TiraCodigo
Etiquetas: asp.net, MVC, Tutorial
En esta parte del tutorial trataremos las formas en las cuales puedes pasar datos entre un request y otro, pasar datos del controlador a la vista, etc, para esto podemos usar ViewData, ViewBag, TempData o Session, ahora la cuestión es cuando y como usar cada uno de ellos, a continuación lo explicamos
ViewData
El ViewData es utilizado para pasar datos del controller a la vista, ya que su duración es solo durante el actual request, una vez que este termina, este dato se abra borrado, de ahi que su uso es solo temporal, comúnmente es usado para mandar mensajes de error a la vista, otro dato importante en cuanto su uso, es que lo utilizar como si fuera un arreglo, aquí un ejemplo
En el controller:
ViewData["nombre"] = "Pedro"; ViewData["apellido"] = "Pérez";
En la vista:
Mi nombre es @ViewData["nombre"] @ViewData["apellido"]
En la pagina:
Mi nombre es Pedro Pérez
ViewBag
El ViewBag se utiliza, al igual que el ViewData, para pasar datos del controller a la vista, su duración también es solo durante el request actual, y una vez terminado este, el dato es borrado, a diferencia del ViewData, este se utiliza para pasar objetos, es decir se utiliza directamente y no se necesita tratar como arreglo
En el controller:
ViewBag.nombreCompleto= “Pedro Pérez”
En la Vista:
Mi nombre es @ViewBag.nombreCompleto
En la pagina:
Mi nombre es Pedro Pérez
TempData
Como vimos en los dos anteriores, tanto el ViewData como el ViewBag tiene una duración de un solo request, pero que pasa cuando queremos pasar datos de un request a otro, pues es aquí donde entra el TempData, ya que esa es su especial cualidad, la duración hasta el siguiente request, es decir que si estamos en una acción (dentro del controller), podemos guardar el dato y utilizarlo en el siguiente request, al igual que el ViewData, este se utiliza como un vector, aquí un ejemplo:
En el controller:
public ActionResult Index() { TempData[“nombreCompleto”] = "Pedro Pérez"; return RedirectToAction("MuestraNombre"); }
El request anterior invoca a la acción MuestraNombre:
public ActionResult MuestraNombre() { string miNombre; miNombre = TempData["nombreCompleto"].ToString(); return View(miNombre); }
Session
El sesión a diferencia de los 3 anteriores, persiste por mas tiempo, este no muere en los siguientes request’s, al igual de los anteriores, se puede guardar cualquier dato y este se almacena, su uso seria el siguiente:
En el controller:
public ActionResult Index() { System.Web.HttpContext.Current.Session["nombreCompleto "] = "Pedro Pérez"; return RedirectToAction("MuestraNombre"); }
El request anterior invoca a la acción MuestraNombre:
public ActionResult MuestraNombre() { string miNombre; miNombre = System.Web.HttpContext.Current.Session["nombreCompleto "].ToString(); return View(miNombre); }
Ahora que ya entendemos para que sirven estos metodos para pasar datos de forma temporal, podemos seguir con el siguiente punto, en el cual veremos el manejo de los helpers en Asp.net MVC