C# 在我的asp.net mvc 2应用程序中,为什么通过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("

在我的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)
公共文件contentresult导出报告(列表字段顺序)
FieldOrder的数据从未发送到重定向操作。为什么?我知道我已经做过很多次了。有什么好处

编辑1

为了清楚起见,FieldOrder是一个
列表
。我没有使用现场区域。重定向本身可以工作,但数据不会传递给方法。我已经验证了应该通过调试来传递数据


另外,我不想使用TempData。如果有多个操作重定向到另一个更一般的操作,则会变得混乱。只通过参数传递数据更简单(IMHO)。

将您的
字段顺序存储在TempData中(仅为一个重定向保存数据)

这里回顾我的一些老问题


这些重定向值丢失的原因是我将一个复杂对象作为参数传递。ASP.NET MVC 2没有处理这些问题。带有基本类型参数的重定向将正常工作。

是否使用区域?重定向是否始终正常工作?我没有使用任何区域。除了不将我在return RedirectToAction行中输入的值作为参数传递外,重定向确实可以正常工作。我知道这是一个可行的选项,但我讨厌这样做。很容易在混合中迷失方向。以我描述的方式使用RedirectToAction应该可以工作。我想知道为什么不是。不过,谢谢你的建议。