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 は使用したくありません。複数のアクションを別のより一般的なアクションにリダイレクトすると、面倒になります。パラメータを介してデータを渡すだけの方がクリーンです(IMHO)。

4

2 に答える 2

1

ここで私の古い質問のいくつかを見ていきます...

これらのリダイレクト値が失われた理由は、複雑なオブジェクトをパラメーターとして渡していたためです。ASP.NET MVC 2 はこれらを処理しませんでした。プリミティブ型パラメーターを使用したリダイレクトは正常に機能します。

于 2012-10-08T16:43:02.427 に答える
0

FieldOrderTempDataに保存します(1つのリダイレクトのデータのみを保持します) http://msdn.microsoft.com/en-us/library/system.web.mvc.tempdatadictionary.aspx

于 2012-05-18T21:31:56.353 に答える