在 ASP.NET MVC 3 中调用 RedirectToAction() 后会话状态被删除

Posted

技术标签:

【中文标题】在 ASP.NET MVC 3 中调用 RedirectToAction() 后会话状态被删除【英文标题】:Session State is erased after calling RedirectToAction() in ASP.NET MVC 3 【发布时间】:2011-11-28 19:15:42 【问题描述】:

我使用一个简单的序列:

    在 [HttpGet] 方法中设置会话状态。 在 [HttpPost] 方法中使用 RedirectToAction() 重定向到另一个操作。 想要在目标中获取该会话状态的值。

问题:

如果用户在我的“表格”视图上点击“提交”按钮,会话中的所有数据都会被清除,我无法在目标操作(即“表格”)中获取它们。代码如下:

   [HttpGet]
    public ActionResult Edit(string TableName, int RowID, NavigationControl nav)
    
        if (nav != null) Session["NavigationData"] = nav;

        myService svc = new myService (_repository);
        EditViewModel model = new EditViewModel();

        model.TableDefinitions = svc.GetTableDefinition(TableName);
        model.RowData = svc.GetRowData(model.TableDefinitions.Name, RowID);

        return View(model);
    

    [HttpPost]
    public ActionResult Edit(EditViewModel model)
    
        MyService svc = new MyService (_repository);
        svc.SaveRowData(model.TableDefinitions.Name, model.RowData);
        return RedirectToAction("Table");
    

    public ActionResult Table(string TableName)
    
        myService svc = new myService (_repository);

        TableViewModel model = new TableViewModel();
        model.TableDefinition = svc.GetTableDefinition(TableName);

        NavigationControl nav = (NavigationControl)Session["NavigationData"];
        if (nav != null)
        
            model.NavigationControl = nav;
        

        return View(model);
    

当用户通过以下方式到达 Session["NavigationData"] 时,它始终为空:redirectToAction("Table")。 如果用户在“编辑”视图上点击 html 链接,Session[“NavigationData”] 可以在“表格”方法中恢复其值!

知道发生了什么吗? 谁删除了 Session 状态?!

【问题讨论】:

您是否在负载均衡器下运行应用程序? 什么是“负载均衡器”?我在visual studio 2010下运行,asp.net开发服务器(cassini)。 【参考方案1】:

我的浏览器 cookie 已关闭,但状态未设置为 cookie-less。

【讨论】:

以上是关于在 ASP.NET MVC 3 中调用 RedirectToAction() 后会话状态被删除的主要内容,如果未能解决你的问题,请参考以下文章

如何在控制器操作中重定向到 aspx 页面

如何在 ASP.NET MVC 的视图中调用多个操作?

ASP.NET MVC学习之过滤器篇

[Asp.Net Core]MVC_Razor布局

[Asp.Net Core]MVC_Razor布局

ASP.NET MVC 4框架揭秘:Controller(3)