Tengo un valor que quiero vaild en una sola solicitud. No estoy usando Session, ya que esto haría que el valor sea global para toda la sesión de navegación.ASP.net MVC - variable global con ámbito de solicitud
Así que he puesto este valor en un campo estático de una clase. Genial, pero luego descubrí que esos campos son aún más globales, es decir, ¡permanecen configurados para toda la aplicación! Esto significa que podría haber una interacción aleatoria entre las sesiones de navegación.
Así que la pregunta es: ¿hay un lugar seguro que puedo poner una variable global, que será
- global a lo largo de la solicitud
- reinicio después de la solicitud se completa
- no afectados por cualquier otra petición, ya sea del mismo usuario o por otros usuarios
Gracias Palantir
EDITAR Voy a elaborar. Tengo una pieza de código en mi página maestra, que necesito ocultar en ciertas condiciones, de las cuales soy consciente solo en el controlador. Pensé en el establecimiento de una variable estática en el controlador, que luego se preguntó por la página maestra, pero ahora veo que podría haber una mejor manera ...
'ViewData' y' HttpContext.Items' se eliminan si llama a RedirectToAction durante el ciclo de vida de la solicitud. La única opción en este caso que se conserva para la solicitud redirigida es 'TempData'. Tendría que quitar los artículos que puso allí después de que haya terminado. –
La forma en que 'TempData' funciona ha cambiado desde entonces y ahora' TempData' dura hasta que se vuelve a leer. Entonces, usar 'TempData' para esto podría llevar a que pasen cosas raras. 'ViewData' (y' ViewBag') no funcionan con pasar datos de la acción secundaria a parent (y creo que incluso vista parcial -> vista principal), por lo que usar 'Context.Items' es lo mejor de los 3. – jahu