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

时间:2011-09-30 21:36:17

标签: asp.net-mvc-3 session-state redirecttoaction

我使用简单的序列:

  1. 在[HttpGet]方法中设置会话状态。
  2. 使用[HttpPost]方法中的RedirectToAction()重定向到另一个操作。
  3. 想要在目的地获取该会话状态的值。
  4. 问题:

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

       [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”]始终为null:return RedirectToAction(“Table”)。 如果用户点击“编辑”视图上的HTML链接,Session [“NavigationData”]可以在“表格”方法中恢复其值!

    有关正在发生的事情的任何想法? 谁删除了会话状态?!

1 个答案:

答案 0 :(得分:0)

我的浏览器Cookie已关闭,但状态未设置为无Cookie。