我可以从HttpContext访问ViewData吗?

时间:2014-06-12 12:39:07

标签: asp.net-mvc httpcontext viewdata controllercontext

我正在处理一个项目,该项目在其授权操作过滤器中设置当前用户配置文件对象等变量,并将它们存储在ViewData中,以便通过以下操作方法进行访问。

然后,action方法从存储库中调用功能。我正在尝试从存储库中找到一种方法来访问ViewData而无需修改存储库的方法签名,并且我希望有一种方法可以通过{{追溯到它我可以从存储库中调用的功能。

任何人都可以帮忙吗?为了清楚起见,我可以修改的唯一代码是在存储库方法中:(

HttpContext.Current

1 个答案:

答案 0 :(得分:0)

我很确定答案是“不”。

当您查看ASP.NET MVC源代码时,ControllerBase会在首次使用时实例化ViewData字典。然后,当您调用View()时,将使用ViewResult字典作为参数实例化新的ControllerBase.ViewData。它看起来不像是应用于公共静态属性或类HttpContext这样的类,您可以从存储库中访问它。

我认为您最好的选择是使用为此类通信而构建的HttpContext.Items。虽然可能不像修改存储库以接受额外数据那样理想。

相关问题