C# 在我的asp.net mvc 2应用程序中,为什么通过RedirectToAction传递的参数有时会丢失?
在我的asp.net mvc 2应用程序中,为什么通过RedirectToAction传递的参数有时会丢失 这使我困惑。有时使用RedirectToAction有效,有时则无效。我没有找到任何押韵或理由。下面是一个例子:C# 在我的asp.net mvc 2应用程序中,为什么通过RedirectToAction传递的参数有时会丢失?,c#,asp.net-mvc,asp.net-mvc-2,redirecttoaction,C#,Asp.net Mvc,Asp.net Mvc 2,Redirecttoaction,在我的asp.net mvc 2应用程序中,为什么通过RedirectToAction传递的参数有时会丢失 这使我困惑。有时使用RedirectToAction有效,有时则无效。我没有找到任何押韵或理由。下面是一个例子: return RedirectToAction("ExportReport", new { FieldOrder = fieldOrder }); 我也尝试过这种变体: return 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)
公共文件contentresult导出报告(列表字段顺序)
FieldOrder的数据从未发送到重定向操作。为什么?我知道我已经做过很多次了。有什么好处
编辑1
为了清楚起见,FieldOrder是一个列表
。我没有使用现场区域。重定向本身可以工作,但数据不会传递给方法。我已经验证了应该通过调试来传递数据
另外,我不想使用TempData。如果有多个操作重定向到另一个更一般的操作,则会变得混乱。只通过参数传递数据更简单(IMHO)。将您的
字段顺序存储在TempData中(仅为一个重定向保存数据)这里回顾我的一些老问题
这些重定向值丢失的原因是我将一个复杂对象作为参数传递。ASP.NET MVC 2没有处理这些问题。带有基本类型参数的重定向将正常工作。是否使用区域?重定向是否始终正常工作?我没有使用任何区域。除了不将我在return RedirectToAction行中输入的值作为参数传递外,重定向确实可以正常工作。我知道这是一个可行的选项,但我讨厌这样做。很容易在混合中迷失方向。以我描述的方式使用RedirectToAction应该可以工作。我想知道为什么不是。不过,谢谢你的建议。