2010-06-08 32 views
1

我有一個表單,其中包含複選框的集合,用於在我的網站上進行精細搜索。ASP.NET MVC表單GET傳遞數組

我想傳遞一個形式得到一個數組,但URL的樣子:

/search?filter=foo&filter=bar&filter=green 

有沒有更好的方式MVC通過這個?可能像

/search?filter=foo,bar,green 

在此先感謝。

回答

2

現在您可以更改此URL。它由瀏覽器構建。

您可以在發送請求之前通過javascript更改URL,但更好的方法是使用後重定向獲取模式(PRG)。

您首先發布到控制器並重定向到您在控制器中構建的url。這樣你就可以完全控制URL。

編輯

這是一個樣本

public ActionResult FilterResult() 
{ 
RouteValueDictionary searchRoute = ControllerContext.RouteData.Values; 
if (searchRoute["Filter"]==null) 
{ 
    searchRoute.Add("Filter",""); 
} 
searchRoute["Filter"] = "filter1,filter2,filter3"; 

return RedirectToAction("Search", searchRoute); 
} 
+0

馬爾科姆您好,我嘗試了PRG模式,但跑了一個問題。數組得到了通過,但我得到了.../search?filter = System.String [],當我重定向到'Get'Action時。你知道爲什麼發生這種情況嗎?這是我發佈的綁定到模型的Action,然後將模型傳遞給Get Action。 public ActionResult Search(ResultsModel m){ResultsModel model = new ResultsModel {Filters = m.Filters};返回RedirectToAction(「搜索」,模型); } – creativeincode 2010-06-08 12:50:06

+0

我更新了帖子 – 2010-06-08 12:57:59