2012-04-17 111 views
0

我有2個索引操作POST和GET當我提交的表單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 }); 

那麼有沒有什麼辦法可以在Post Action中獲取Url或url參數?你在這種情況下的建議是什麼?

+0

什麼是url參數?通常當你POST時,沒有查詢字符串參數。或者有你的情況嗎?你在說什麼查詢字符串參數或路由值或POST值? – 2012-04-17 09:47:57

+0

@DarinDimitrov我更新問題 – Saeid 2012-04-17 09:58:12

回答

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

謝謝,這真的很有幫助,實際上我不想傳遞所有的路由值作爲發佈,所以我使用'if(Request.QueryString.AllKeys.Contains(「searchItem」))long.TryParse (Request.QueryString.GetValues(「searchItem」)。FirstOrDefault(),out Id);' – Saeid 2012-04-17 10:34:38