2012-05-07 29 views
14

¿Puede alguien explicar el propósito de TempData en MVC? Entiendo que se comporta como ViewBag pero, ¿qué hace más allá de eso?MVC C# TempData

Respuesta

21

TempData está destinado a ser una instancia de muy corta vida, y usted debe usar solo durante las solicitudes actuales y subsiguientes. Dado que TempData funciona de esta manera, necesita saber con certeza cuál será la próxima solicitud , y redirigir a otra vista es la única vez que puede garantizar esto. Por lo tanto, el único escenario donde utilizar TempData funcionará de manera confiable es cuando está redirigiendo. Esto es porque un redireccionamiento mata la solicitud actual (y envía el código de estado HTTP 302 Objeto movido al cliente), luego crea una nueva solicitud en el servidor para servir a la vista redirigida. Mirando hacia atrás en la muestra de código HomeController anterior significa que el objeto TempData podría arrojar resultados diferentes a los esperados porque no se puede garantizar el siguiente origen de solicitud . Por ejemplo, la próxima solicitud puede originar desde una máquina y una instancia de navegador completamente diferentes.

http://rachelappel.com/when-to-use-viewbag-viewdata-or-tempdata-in-asp.net-mvc-3-applications

8

ViewBag

Permite crear propiedades dinámicas

de datos que pasan entre el controlador y vista

Controller

ViewBag.Name= "Lion";

Ver

<div> 
    <h4>@ViewBag.Name</h4> 
</div> 

TempData

TempData está destinado a ser una instancia de muy corta vida

sólo se debe utilizar durante el actual y el s solicitudes ubsequent única

diccionario TempData se utiliza para compartir datos entre las acciones del controlador

TempData["Name"] = "Lion"; 

he escrito Blog post sobre this.Check que How to use Asp.Net MVC TempData Properly ?

2

TempData es un objeto de diccionario que se deriva de la clase TempDataDictionary y se almacena en una sesión de vidas cortas.

public TempDataDictionary TempData { get; set; } 

Es una propiedad de ControllerBase class.It se utiliza para pasar datos desde la solicitud actual a petición posterior (medios redireccionamiento de una página a otra). Su vida útil es muy corta y solo permanece hasta que la vista de destino esté completamente cargada. Es necesario encasillar para obtener datos y verificar valores nulos para evitar errores. Se usa para almacenar solo mensajes de una sola vez como mensajes de error, mensajes de validación.

+0

la falta de información sobre este tema es molesto. ¿Cómo funciona Tempdata dentro del protocolo HTTP? ¿es una cookie efímera como https://www.playframework.com/documentation/2.6.x/JavaSessionFlash de Play es algo que se almacena en el objeto de sesión del lado del servidor? Si es así, esto significa que si tiene varios servidores, es posible que no obtenga ese TempData, ya que solo existe en uno de ellos, ¿no? –

0

¿Qué es TempData?

Tempdata ayuda a almacenar/conservar valores dentro de una sola solicitud. Este es uno de los conceptos para mantener el estado en ASP .Net MVC.

¿Cómo almacenar/persistir los datos en la próxima solicitud? TempData conserva los valores para la próxima solicitud en 4 condiciones diferentes en MVC. Son

Condición 1 - No se lee en la primera solicitud.
Condición 2: leer en la primera solicitud.
Condición 3: lea & persistiendo utilizando Mantener.
Condición 4 - Persistir utilizando Peek and Read.

No leído en la primera solicitud: Si no leemos "TempData" en la solicitud actual, el valor de "TempData" se mantendrá para la próxima solicitud.
Lea en la primera solicitud: Si leemos "TempData" en la solicitud actual, entonces el valor de "TempData" no se mantendrá para la próxima solicitud.
Lea & Persista utilizando Keep: Si leemos "TempData" en la solicitud actual y podemos mantener el método para persistir TempData para la próxima solicitud. En MVC, tenemos métodos de mantener nulo() y mantener nulo (clave de cadena) para conservar los datos.

http://dotnet-helpers.com/mvc/how-to-persist-data-with-tempdata-using-peek-and-keep-in-mvc/

Cuestiones relacionadas