从GLOBAL.ASAX访问TempData

Erç*_*ğlu 5 c# asp.net asp.net-mvc asp.net-mvc-4

我'找一个方法来获得访问权限,并设置TempDataGLOBAL.ASAX

我尝试过这样但仍然在TempData上获得错误.

HttpContext.Current.TempData["Passed"] = "1";

And*_*ker 3

TempData是该类的一个属性System.Web.Mvc.ControllerBase。由于您不在控制器中,因此无法访问它。我非常怀疑您能否轻松实现它,因为设置此功能的整个链是由 MVC 框架构建的。

由于TempData[]Session(即SessionStateTempDataProvider)支持,您应该能够将值插入会话并将其取出。这确实依赖于阅读源代码(以查找使用的密钥),并且绝对不受支持。

var dataKey = "__ControllerTempData";
var dataDict = HttpContext.Current.Session[dataKey] as IDictionary<string,object>;
if (dataDict == null) { 
    /* what do you want to do? add a new IDict<> and put in session? */ 
} else {
    dataDict["Passed"] = 1;
    HttpContext.Current.Session[dataKey] = dataDict;
}
Run Code Online (Sandbox Code Playgroud)

警告,未经测试的代码!您将需要进行调试。

正如其他人所说,这样做的原因是什么?你想达到什么目的?这可能是一个更好的方法。

  • 已测试。这适用于 Application_AcquireRequestState (在 BeginRequest 中:会话始终为空) (2认同)