在 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() 后会话状态被删除的主要内容,如果未能解决你的问题,请参考以下文章