如何在单个控制器中的操作之间共享数据

发布于 2024-11-08 21:35:03 字数 833 浏览 0 评论 0原文

所以我有这个:

    public ActionResult ViewForum(int ForumID)
    {
        _frmSrv = new ForumService();
        _roleSrv = new RoleService();
        //_userAccess = new UserAccess();
        var modelView = _frmSrv.GetForumIndexView(ForumID);
        TempData[CurrentUser.Name] = _roleSrv.GetUserAccessForForum(CurrentUser, ForumID);
        modelView.UserAccess = TempData[CurrentUser.Name] as UserAccess;
        return View(modelView);
    }

还有这个:

    public ActionResult ViewThread(int ThreadID)
    {
        _postSrv = new PostService();
        var modelView = _postSrv.GetThreadIndexView(ThreadID);
        modelView.UserAccess = TempData[CurrentUser.Name] as UserAccess;
        return View(modelView);
    }

您可能已经猜到我想将 UserAccess 从一个操作传递到另一个操作。 有办法做到吗?

So I have this:

    public ActionResult ViewForum(int ForumID)
    {
        _frmSrv = new ForumService();
        _roleSrv = new RoleService();
        //_userAccess = new UserAccess();
        var modelView = _frmSrv.GetForumIndexView(ForumID);
        TempData[CurrentUser.Name] = _roleSrv.GetUserAccessForForum(CurrentUser, ForumID);
        modelView.UserAccess = TempData[CurrentUser.Name] as UserAccess;
        return View(modelView);
    }

and this:

    public ActionResult ViewThread(int ThreadID)
    {
        _postSrv = new PostService();
        var modelView = _postSrv.GetThreadIndexView(ThreadID);
        modelView.UserAccess = TempData[CurrentUser.Name] as UserAccess;
        return View(modelView);
    }

You probaly already guess I want to pass UserAccess from one action to another.
Is there a way to do it ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

怪异←思 2024-11-15 21:35:03

ASP.NET MVC 中的操作是无状态的,这意味着操作需要传递每个请求所需的所有信息。您可以执行以下操作:

public ActionResult ViewThread(int ThreadID, int ForumID)
{
    _postSrv = new PostService();
    var modelView = _postSrv.GetThreadIndexView(ThreadID);
    modelView.UserAccess = _roleSrv.GetUserAccessForForum(CurrentUser, ForumID) as UserAccess;
    return View(modelView);
}

如果可以仅使用 ThreadID 获取 ForumID,则无需更改方法签名。

Actions in ASP.NET MVC are stateless which means that actions need to be passed all the information it needs for every request. You can do the following:

public ActionResult ViewThread(int ThreadID, int ForumID)
{
    _postSrv = new PostService();
    var modelView = _postSrv.GetThreadIndexView(ThreadID);
    modelView.UserAccess = _roleSrv.GetUserAccessForForum(CurrentUser, ForumID) as UserAccess;
    return View(modelView);
}

If it's possible to get the ForumID with only the ThreadID you don't need to change the method signature.

丑丑阿 2024-11-15 21:35:03

asp.net mvc 仍然是 asp.net,您可以使用会话、cookie 等来执行此操作

asp.net mvc is still asp.net, you can use sessions, cookies etc to do this

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文