如何在单个Controller中的操作之间共享数据

时间:2011-05-20 17:13:20

标签: asp.net-mvc asp.net-mvc-2 asp.net-mvc-3

所以我有这个:

    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);
    }

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

2 个答案:

答案 0 :(得分:3)

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,则无需更改方法签名。

答案 1 :(得分:0)

asp.net mvc仍然是asp.net,你可以使用session,cookies等来做到这一点