Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.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
.net 从业务对象访问控制器上下文/临时数据_.net_Asp.net Mvc_Tempdata_Controllercontext - Fatal编程技术网

.net 从业务对象访问控制器上下文/临时数据

.net 从业务对象访问控制器上下文/临时数据,.net,asp.net-mvc,tempdata,controllercontext,.net,Asp.net Mvc,Tempdata,Controllercontext,我正在尝试构建一个可以交换的会话/临时数据提供程序。默认提供程序将在asp.net mvc之上工作,它需要从业务对象类访问.net mvc TempData。我知道tempdata可以通过控制器上下文获得,但我似乎无法找到它是通过HttpContext还是其他方式公开的。我真的不想将控制器上下文作为参数传递,因为这会稀释我的接口定义,因为只有基于asp.net的会话提供程序需要这个,而其他(使用NoSQL DB等)不关心控制器上下文 为了进一步澄清,在这里添加更多的代码。我的ISession界面

我正在尝试构建一个可以交换的会话/临时数据提供程序。默认提供程序将在asp.net mvc之上工作,它需要从业务对象类访问.net mvc TempData。我知道tempdata可以通过控制器上下文获得,但我似乎无法找到它是通过HttpContext还是其他方式公开的。我真的不想将控制器上下文作为参数传递,因为这会稀释我的接口定义,因为只有基于asp.net的会话提供程序需要这个,而其他(使用NoSQL DB等)不关心控制器上下文

为了进一步澄清,在这里添加更多的代码。我的ISession界面如下所示。当这段代码投入生产时,session/tempdata将使用nosqldb工作。但我也喜欢在asp.net mvc会话/tempdata之上使用另一个实现来进行开发测试等

公共接口会话

{
    T GetTempData<T>(string key);

    void PutTempData<T>(string key, T value);

    T GetSessiondata<T>(string key);

    void PutSessiondata<T>(string key, T value);

}
{
T GetTempData(字符串键);
无效数据(字符串键,T值);
T GetSessiondata(字符串键);
void PutSessiondata(字符串键,T值);
}

我不知道您到底想做什么,但实现了
IDictionary
,这样您就可以让业务对象将其作为参数或使用构造函数注入。然后,您可以让控制器将TempData作为参数传递给业务对象。通过使用字典界面,您的业务对象不再依赖于ASP.NET MVC。

感谢您的回复。我试图避免将tempdata/controller上下文传递给这些方法。希望我上面的编辑能让它更清楚。@thanikkal,你是想用自定义提供程序覆盖默认的ASP.NET会话提供程序吗?不确定覆盖是否是术语,但是的,我正在尝试拥有自己的会话提供程序。@thanikkal,在这种情况下,您需要通过实现该类并在web.config中注册您的会话状态提供程序来编写一个。但我并不完全希望在会话内容上采用msdn的方式。我最初提出的从外部访问MVC内部对象的问题仍然没有得到回答。