来自业务对象的Access Controller Context / TempData

我正在尝试构建一个可以交换的session / tempdata提供程序。默认提供程序将在asp.net mvc之上工作,它需要从业务对象类访问.net mvc TempData。我知道tempdata可以通过控制器上下文获得,但我似乎无法找到是通过HttpContext或其他东西暴露的。我真的不想将Controller上下文作为参数传递,因为这会稀释我的接口定义,因为只有基于asp.net的会话提供程序需要这个,其他(使用NoSQL DB等)不关心Controller Context。 为了进一步澄清,在这里添加更多代码。我的ISession界面看起来像这样。当此代码进入生产时,session / tempdata预计可以使用NoSql db。但我也希望有另一个实现在asp.net mvc session / tempdata之上,以便我的开发测试等。 公共接口ISession
{
    T GetTempData<T>(string key);

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

    T GetSessiondata<T>(string key);

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

}
    
已邀请:
我不确切知道你要做什么,但TempDataDictionary实现了
IDictionary<string, object>
所以你可以让你的业务对象把它作为参数或使用构造函数注入。然后,您可以让控制器将TempData作为参数传递给业务对象。通过使用字典界面,您的业务对象不再依赖于ASP.NET MVC。     

要回复问题请先登录注册