从GLOBAL.ASAX访问TempData

时间:2013-09-25 09:39:33

标签: c# asp.net asp.net-mvc asp.net-mvc-4

我正在寻找一种获取访问权限的方法,并在TempData

中设置GLOBAL.ASAX

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

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

2 个答案:

答案 0 :(得分:3)

TempDataSystem.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;
}

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

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

答案 1 :(得分:1)

这显然不起作用,因为HttpContext没有任何名为TempData的属性。

根据您要实现的目标,例如使用HttpContext.Current.CacheHttpContext.Current.Session ......