【发布时间】:2012-05-26 09:23:42
【问题描述】:
在我的 asp.net mvc 2 应用程序中,为什么有时会丢失通过 RedirectToAction 传递的参数?
这让我很困惑。有时使用 RedirectToAction 有效,有时则无效。我没有找到任何押韵或理由。这是一个例子:
return RedirectToAction("ExportReport",
new { FieldOrder = fieldOrder });
我也试过这个变种:
return RedirectToAction("ExportReport", "SearchAndExport",
new { FieldOrder = fieldOrder });
我在 global.asax.cs 中添加了以下内容:
routes.MapRoute(
"ExportReport",
"{controller}.aspx/{action}/{FieldOrder}",
new { controller = "SearchAndExport", action = "ExportReport", FieldOrder = UrlParameter.Optional }
);
最后,我要重定向到的操作的原型:
public FileContentResult ExportReport(List<String> FieldOrder)
FieldOrder 的数据永远不会进入重定向操作。为什么?我知道我已经这样做了,并且它也工作了很多次。什么给了?
编辑 1
为了清楚起见,FieldOrder 是List<String>。我没有使用站点区域。重定向本身有效,但数据不会传递给方法。我已经验证了应该通过调试传递的数据。
另外,我宁愿不使用 TempData。如果您有多个动作重定向到另一个更通用的动作,那将变得混乱。通过参数传递数据更简洁(恕我直言)。
【问题讨论】:
-
您在使用区域吗?重定向是否始终正常工作?
-
我没有使用任何区域。除了不传递我在 return RedirectToAction 行中作为参数输入的值之外,重定向确实可以正常工作。
标签: c# asp.net-mvc asp.net-mvc-2 redirecttoaction