¿Cómo puedo acceder a TempData desde HttpContext.Current?Acceso a TempData desde HttpContext.Current
Respuesta
No puede/no debe tener acceso TempData
de HttpContext.Current
. Necesitas una instancia de controlador. Lamentablemente, debido a que no ha explicado su situación y por qué necesita hacer esto, no puedo brindarle una mejor alternativa.
Estoy creando una clase que envuelve TempData de una forma más amigable/tipo segura. Utiliza TempData internamente, pero no quiero exponer ese hecho. No quiero tener que pasar TempData como 'nuevo MyTempDataWrapper (this.TempData)'. Si TempData solo se almacena en Session y se puede acceder a Session desde HttpContext.Current, ¿por qué no debería poder acceder a TempData desde HttpContext.Current? – BowserKingKoopa
Dirigiendo su comentario a la otra respuesta, puede implementar su propio ITempDataProvider y luego anular el controlador para usarlo. Eche un vistazo a la clase CookieTempDataProvider en Mvc3Futures que almacena tempdatos en cookies en lugar de sesiones para ver cómo es posible.
http://volaresystems.com/Blog/post/2011/06/30/Sessionless-MVC-without-losing-TempData.aspx
En lugar de cambiar donde se almacena TempData, su aplicación podría posible Heredar del SessionCookieTempDataProvider y simplemente añadir métodos de tipo de fallos para él.
Si desea hacer esto sin pasar el objeto de contexto como parámetro debido a sus propias decisiones de diseño, puede al menos usar [ThreadStatic] en su propia clase estática global. Esto puede ser conveniente para los miembros a los que se accede desde la propiedad, que a su vez deben confiar en dicho parámetro ThreadStatic, ya que no son funciones.
ThreadStatic puede ayudar a compartir recursos en el mismo subproceso a los marcos de pila distantes sin necesidad de pasar parámetros. HttpContext.Current usa ThreadStatic para lograr esto.
Una clase regular de controlador MVC no hará esto por usted. Por lo tanto, deberá crear su propia Clase para todos los Controladores de su proyecto para heredar.
public class MyController : Controller
{
public MyController()
{
_Current = this;
}
[ThreadStatic]
public static RacerController _Current = null;
public static RacerController Current
{
get
{
var thisCurrent = _Current; //Only want to do this ThreadStatic lookup once
if (thisCurrent == null)
return null;
var httpContext = System.Web.HttpContext.Current;
if (httpContext == null) //If this is null, then we are not in a request scope - this implementation should be leak-proof.
return null;
return thisCurrent;
}
}
protected override void Dispose(bool disposing)
{
_Current = null;
base.Dispose(disposing);
}
}
Uso:
var thisController = MyController.Current; //You should always save to local variable before using - you'll likely need to use it multiple times, and the ThreadStatic lookup isn't as efficient as a normal static field lookup.
var value = thisController.TempData["key"];
thisController.TempData["key2"] = "value2";
- 1. ¿Es posible acceder a la clave/valor TempData desde HttpContext?
- 2. HttpContext.Current accedido en clases estáticas
- 3. Envoltorio TempData
- 4. ¿Cómo accedo a HttpContext.Current en Task.Factory.StartNew?
- 5. .NET Remoting y HttpContext.Current
- 6. TempData No está borrando
- 7. TempData: ¿Es seguro?
- 8. MVC C# TempData
- 9. Acceso a User.Identity desde la página maestra
- 10. Acceso a archivos FTP desde Scala
- 11. C#: Acceso a Enum desde otra clase
- 12. Acceso a Java jar desde Delphi
- 13. ¿Tienes acceso a phppgadmin desde otra computadora?
- 14. Acceso a TEAMCITY desde una máquina remota
- 15. C++ Acceso a SQL Server desde Linux
- 16. access HttpContext.Current from WCF Web Service
- 17. Diferencia entre ViewData y TempData?
- 18. Sesión de acceso en servicio WCF desde WebHttpBinding
- 19. Acceso iPhone desde Windows
- 20. Acceso desde servlet Java
- 21. HttpContext.Current es nulo cuando se utiliza async
- 22. Mock HttpContext.Current in Test Init Método
- 23. Uso de HttpContext.Current en ASP.NET WebAPI
- 24. uso TempData en un error de Ayudante: El nombre 'TempData' no existe en el contexto actual
- 25. ASP.NET MVC - TempData - Buena o mala práctica
- 26. HttpContext.Current es nulo en mi servicio web
- 27. cámara de acceso desde uiwebview?
- 28. Usando TempData mientras <modoSesiónState = "Desactivado" />
- 29. Acceso StackExchange API desde Emacs
- 30. ASP.NET MVC Store TempData en Cookie
¿Ha encontrado la solución a este problema? – trailmax