2010-06-08 90 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