5

我正在寻找一种访问和设置TempData的方法GLOBAL.ASAX

我试过这样,但在 TempData 上仍然出现错误。

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

4

2 回答 2

3

TempDataSystem.Web.Mvc.ControllerBase类的属性。由于您不在控制器中,因此无法访问它。我非常怀疑您是否可以轻松获得它,因为设置它的整个链是由 MVC 框架构建的。

由于TempData[]Session(ie 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;
}

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

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

于 2013-09-25T10:31:26.923 回答
1

那显然不起作用,因为HttpContext没有任何名为TempData.

取决于您想要实现、使用HttpContext.Current.CacheHttpContext.Current.Session例如...

于 2013-09-25T10:07:24.343 回答