Sé lo que ViewData es y lo uso todo el tiempo, pero en ASP.NET vista previa 5 se introdujo algo nuevo llamado TempData.

Yo normalmente fuertemente tipo de mi ViewData, en lugar de utilizar el diccionario de objetos de enfoque.

Así, cuando debo usar TempData en lugar de ViewData?

Hay mejores prácticas para esto?

InformationsquelleAutor Elijah Manor | 2008-10-06

6 Comentarios

  1. 91

    En una frase: TempData son como ViewData con una diferencia: sólo contienen datos entre dos sucesivas solicitudes, después de que se destruyó. Usted puede utilizar TempData para pasar mensajes de error o algo similar.

    Aunque anticuado, este artículo tiene buena descripción de la TempData ciclo de vida.

    Como Ben Scheirman dijo aquí:

    TempData es una sesión de copia de almacenamiento temporal diccionario que está disponible para una sola solicitud. Es genial para pasar mensajes entre los controladores.

    • ambos enlaces están rompiendo 🙁
    • Creo que es una gran diferencia, en que TempData implicará algo que es potencialmente mucho más complicado (la sesión) que un simple diccionario que se pasa de método a método
  2. 29

    Cuando una acción devuelve un RedirectToAction resultado se hace una redirección HTTP (equivalente a la Respuesta.Redirección). Los datos pueden ser conservados en la TempData propiedad (diccionario) de la controladora para la duración de una sola HTTP redirigir la petición.

    • El valor de ViewData se conserva en el mismo caso?
    • No, ViewData no conservar los datos a través de la Redirección. Esa es la principal diferencia de TempData.
  3. 5

    ViewData:

    • ViewData es un tipo de diccionario public ViewDataDictionary ViewData { get; set; }
    • Se puede utilizar para transferir datos desde el controlador a la vista, de una manera sólo
    • Es la vida, se encuentra a sólo durante la petición actual
    • Si la cadena de pasar entonces no hay necesidad de convertir
    • Si pasa de objeto, entonces usted necesita para convertir pero antes de que usted necesita para comprobar si el valor no es nulo
    • Su propiedad en ControllerBase, que es el padre de Controller clase

    TempData:

    1. TempData usar internamente TempDataDictionary: public TempDataDictionary TempData { get; set; }
    2. Una vez que los datos se guardan en TempDataDictionary objeto:
      • Se persiste en ella y se puede leer desde cualquier punto de vista o cualquier acción en cualquier controlador
      • Que solo puede ser leído de una vez; una vez leído, se convierte en nulo
      • Se guarda en sesión para que en caso de expiración de sesión se pierden los datos.

    Este comportamiento es nuevo a partir de ASP.NET MVC 2 y versiones posteriores.
    En versiones anteriores de ASP.NET MVC, los valores en TempData estaban disponibles sólo hasta la siguiente solicitud.

    1. Está vivo, hasta que se lea o sesión caduca y se puede leer desde cualquier lugar.

    Ver la comparación de ViewData, ViewBag, TempData y de la Sesión en MVC en detalle

  4. 0

    la vista de datos se utiliza cuando queremos pasar los datos del controlador a la vista correspondiente.
    los datos de la vista tienen muy corta vida, eso significa que va a destruir cuando se produce la redirección.
    Ejemplo(Controlador):

    public ViewResult try1()
        {
            ViewData["DateTime"] = DateTime.Now;
            ViewData["Name"] = "Mehta Hitanshi";
            ViewData["Twitter"] = "@hitanshi";
            ViewData["City"] = "surat";
            return View();
        }

    try1.cshtm

    <table>
    <tr>
        <th>Name</th>
        <th>Twitter</th>
        <th>Email</th>
        <th>City</th>
        <th>Mobile</th>
    </tr>
    <tr>
        <td>@ViewData["Name"]</td>
        <td>@ViewData["Twitter"]</td>
        <td>@ViewData["City"]</td>
    </tr>
    </table> 

    TempData las transferencias de datos entre los controladores o entre las acciones.
    Se utiliza para almacenar una hora de los mensajes y su vida útil es muy corta.podemos utilizar TempData.Guardar() para hacerlo disponible a través de todas las acciones o para hacerla persistente.

    Ejemplo(Controlador):

    public ActionResult try3()
        {
            TempData["DateTime"] = DateTime.Now;
            TempData["Name"] = "Ravina";
            TempData["Twitter"] = "@silentRavina";
            TempData["Email"] = "[email protected]";
            TempData["City"] = "India";
            TempData["MobNo"] = 9998975436;
            return RedirectToAction("TempView1");
        }
        public ActionResult TempView1()
        {
            return View();
        }

    TempView1.cshtm

    <table>
    <tr>
        <th>Name</th>
        <th>Twitter</th>
        <th>Email</th>
        <th>City</th>
        <th>Mobile</th>
    </tr>
    <tr>
        <td>@TempData["Name"]</td>
        <td>@TempData["Twitter"]</td>
        <td>@TempData["Email"]</td>
        <td>@TempData["City"]</td>
        <td>@TempData["MobNo"]</td>
    </tr>
    </table>

Dejar respuesta

Please enter your comment!
Please enter your name here