Usar Tempdata en ASP.NET MVC – Mejores prácticas

Estoy usando ASP.NET MVC 3 para construir una aplicación web.

Lo que bash hacer es pasar valores entre dos controladores, aunque hay muchas maneras de hacerlo. Estoy particularmente interesado en usar TempData para esto.

 public ActionResult Action1() { string someMessage; Test obj = SomeOperation(); if(obj.Valid) { someMessage = obj.UserName; } else { someMessage = obj.ModeratorName; } TempData["message"] = someMessage; return RedirectToAction("Index"); } public ActionResult Index() { ViewBag.Message = TempData["message"] return View(); } 

Entonces, ¿el uso de TempData aquí es correcto? Me refiero a las mejores prácticas de progtwigción es esta forma correcta de usar TempData ?

¿En qué casos en tiempo real debe TempData ?

Nota: he revisado los siguientes enlaces

  • Cuándo usar TempData vs Session en ASP.Net MVC
  • http://www.gregshackles.com/2010/07/asp-net-mvc-do-you-know-where-your-tempdata-is/

Gracias

TempData es un TempData en el que puede volcar datos que solo son necesarios para la siguiente solicitud. Es decir, cualquier cosa que coloque en TempData se descarta después de que se complete la siguiente solicitud. Esto es útil para mensajes de una sola vez, como errores de validación de formularios. Lo importante a tener en cuenta aquí es que esto se aplica a la siguiente solicitud en la sesión, por lo que esa solicitud puede suceder en una ventana o pestaña del navegador diferente.

Para responder a su pregunta específica: no hay una forma correcta de usarlo. Todo depende de la usabilidad y la conveniencia. Si funciona, tiene sentido y otros lo entienden relativamente fácil, es bueno. En su caso particular, el paso de un parámetro de esta manera está bien, pero es extraño que deba hacer eso (¿olor a código?). Prefiero mantener un valor como este en recursos (si es un recurso) o en la base de datos (si es un valor persistente). Desde su uso, parece un recurso, ya que lo está usando para el título de la página.

Espero que esto ayude.

Tenga en cuenta que MVC 3 en adelante el comportamiento de persistencia de TempData ha cambiado, ahora el valor en TempData se conserva hasta que se lee, y no solo para la próxima solicitud.

El valor de TempData persiste hasta que se lee o hasta que la sesión expira. La persistencia de TempData de esta manera habilita escenarios como la redirección, porque los valores en TempData están disponibles más allá de una sola solicitud. https://msdn.microsoft.com/en-in/library/dd394711%28v=vs.100%29.aspx

Solo tenga en cuenta la persistencia de TempData, es un poco complicado. Por ejemplo, si simplemente leyó TempData dentro de la solicitud actual, se eliminaría y, por lo tanto, no la tendrá para la próxima solicitud. En cambio, puedes usar el método Peek . Yo recomendaría leer este genial artículo:

MVC Tempdata, Peek and Keep confusión