Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从GLOBAL.ASAX访问TempData_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# 从GLOBAL.ASAX访问TempData

C# 从GLOBAL.ASAX访问TempData,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我正在寻找一种方法来访问并在GLOBAL.ASAX中设置TempData 我试过这样做,但仍然在TempData上出错 HttpContext.Current.TempData[“已传递”]=“1”这显然不起作用,因为HttpContext没有任何名为TempData的属性 根据您想要实现的目标,使用HttpContext.Current.Cache或HttpContext.Current.Session例如…TempData是System.Web.Mvc.ControllerBase类的属性。

我正在寻找一种方法来访问并在
GLOBAL.ASAX中设置
TempData

我试过这样做,但仍然在TempData上出错


HttpContext.Current.TempData[“已传递”]=“1”

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


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

TempData
System.Web.Mvc.ControllerBase
类的属性。由于您不在控制器中,因此无法访问该控制器。我非常怀疑你是否能轻易地做到这一点,因为建立这一点的整个链条都是由MVC框架构建的

由于
TempData[]
会话
(即
sessionstatempdataprovider
)支持,您应该能够将值插入会话并将其取出。这确实依赖于阅读源代码(找到所使用的密钥),而且肯定不受支持

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;
}
var dataKey=“\uuu ControllerTempData”;
var dataDict=HttpContext.Current.Session[dataKey]作为IDictionary;
如果(dataDict==null){
/*您想做什么?添加一个新的IDict并投入会话?*/
}否则{
dataDict[“已通过”]=1;
HttpContext.Current.Session[dataKey]=dataDict;
}
警告,未经测试的代码!您需要进行调试。


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

为什么要这样做?听起来不对。你想实现什么?我需要一个真正的临时载体,第一页加载。我需要在start in global.asax的会话中使用它,并向用户发出特别通知。等等。为什么不把它放在
会话\u Start
和real
会话[]
中,然后进行检查,如果你使用了它,就将其删除。嗨,谢谢你明确的回复。但是,错误:名称“currentTemp”在当前上下文中不存在。抱歉,忘记更改一个位置。我希望你能看到这一点并解决这个问题。如果你想做这种奇怪的事情,你应该能够调试基本的。更新。测试。这可以从应用程序状态(在BeginRequest中:会话始终为空)开始工作