gpt4 book ai didi

asp.net-mvc - 我可以从 HttpContext 访问 ViewData 吗?

转载 作者:行者123 更新时间:2023-12-02 03:34:53 24 4
gpt4 key购买 nike

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

然后操作方法调用存储库中的功能。我正在尝试找到一种从存储库访问 ViewData 的方法无需修改存储库的方法签名,我希望有一种方法可以通过我可以从存储库调用的 HttpContext.Current 功能。

有人可以帮忙吗?明确一点,我唯一可以修改的代码是在存储库方法中:(

public class MyController : Controller {
[MyAuthorize] // ViewData items are set here
public void MyAction(int id)
{
new MyRepository().DoSomething(id); // Need to access ViewData items within this repository method and am unable to alter the method signature :(
}
}

最佳答案

我很确定答案是否定的。

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

我认为最好的选择是使用 HttpContext.Items它是为这种类型的通信而构建的。虽然可能不如仅仅修改存储库以接受额外数据那么理想。

关于asp.net-mvc - 我可以从 HttpContext 访问 ViewData 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24184635/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com