2

在我的 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。如果您有多个动作重定向到另一个更通用的动作,那将变得混乱。仅通过参数传递数据更清洁(恕我直言)。

4

2 回答 2

1

在这里回顾我的一些老问题......

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

于 2012-10-08T16:43:02.427 回答
0

将您的数据存储FieldOrder在 TempData(仅保存一个重定向的数据)http://msdn.microsoft.com/en-us/library/system.web.mvc.tempdatadictionary.aspx

于 2012-05-18T21:31:56.353 回答