2012-04-17 9 views
0

私は2つの指数アクションポストを持っていると私は、フォームを送信したときにGET、POSTアクション返さ:のPOSTアクションでURLを取得ASP.NET MVC 3

return RedirectToAction("Index"); 

編集:

マイ取得インデックスアクション検索をサポートするいくつかのパラメータを取得し、返されたListをフィルタすることができます。このように:

public ActionResult Index(string search = "", long searchItem = 0, long RC = 0, long Page = 1) 

私は、ページ単位のリストを使用し、ページあたりの行の数を示しDropDownListがあり、私はform.submitedこのドロップダウンの変化にjqueryのスクリプトを作成し、フォームがRedirectTActionで を提出したときに、私は失われました私のパラメータは、次のコード:

[HttpPost] 
public ActionResult Index(FormCollection collection, string search = "") { 

    long RowCount = 0; 
    long.TryParse(string.Format("{0}", collection["RowCount"]), out RowCount); 

//More implement 

return RedirectToAction("Index", new { RC = RowCount, search = search, searchItem = Id }); 

私はポストアクションのURLまたはURLパラメータを取得する方法はありますか?このような状況であなたの提案は何ですか?

+0

どのようなURLパラメータですか?通常、POST時には、クエリ文字列パラメータはありません。それともあなたの場合にはありますか?クエリ文字列パラメータやルート値、POSTされた値について話していますか? –

+0

@DarinDimitrov私は質問を更新する – Saeid

答えて

1

あなたはリダイレクトする前にRouteValueDictionary内のすべてのクエリ文字列パラメータをキャプチャすることができます:

var query = new RouteValueDictionary(
    Request 
     .QueryString 
     .Keys 
     .OfType<string>() 
     .ToDictionary(key => key, key => (object)Request.QueryString[key]) 
); 
return RedirectToAction("Index", query); 

これは、クエリ文字列パラメータを維持します。ルート値とPOSTされた値を追加する場合は、それらを連結して結果にすることができます。

+0

実際には役に立ちました。実際には、投稿されたすべてのRoute値を渡したくないので、 'if(Request.QueryString.AllKeys.Contains(" searchItem "))long.TryParse (Request.QueryString.GetValues( "searchItem")。FirstOrDefault()、Id外); ' – Saeid

関連する問題