我正在处理一个项目,该项目在其授权操作过滤器中设置当前用户配置文件对象等变量,并将它们存储在ViewData
中,以便通过以下操作方法进行访问。
然后,action方法从存储库中调用功能。我正在尝试从存储库中找到一种方法来访问ViewData
而无需修改存储库的方法签名,并且我希望有一种方法可以通过{{追溯到它我可以从存储库中调用的功能。
任何人都可以帮忙吗?为了清楚起见,我可以修改的唯一代码是在存储库方法中:(
HttpContext.Current
答案 0 :(得分:0)
我很确定答案是“不”。
当您查看ASP.NET MVC源代码时,ControllerBase
会在首次使用时实例化ViewData字典。然后,当您调用View()
时,将使用ViewResult
字典作为参数实例化新的ControllerBase.ViewData
。它看起来不像是应用于公共静态属性或类HttpContext
这样的类,您可以从存储库中访问它。
我认为您最好的选择是使用为此类通信而构建的HttpContext.Items
。虽然可能不像修改存储库以接受额外数据那样理想。