2012-05-18 20 views
2

在我的asp.net mvc 2應用程序中,爲什麼通過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) 

FieldOrder的數據永遠不會讓它重定向到動作。爲什麼?我知道我已經完成了這個工作,並且也多次工作。是什麼賦予了?

編輯1

要非常清楚,FieldOrder是List<String>。我沒有使用網站區域。重定向本身起作用,但數據不會傳遞給方法。我已經驗證有數據應該通過調試傳遞。

此外,我寧可不使用TempData。如果你有多個動作重定向到另一個更一般的動作,那就變得混亂。它更簡潔(恕我直言)只通過參數傳遞數據。

+0

您是否在使用區域?重定向是否總是正常工作? –

+0

我沒有使用任何區域。除了不將作爲參數傳入的返回RedirectToAction行的值傳遞外,重定向的工作正確。 – jason

回答

1

在看一些我在這裏的老問題...

這些重定向值的原因是迷路了,我是傳遞一個複雜對象作爲參數。 ASP.NET MVC 2沒有處理這些。重定向與原始類型參數將工作正常。

相關問題