2010-06-08 5 views
1

У меня есть форма с коллекцией флажков для уточнения функции поиска на моем сайте.ASP.NET MVC form GET проходящий массив

Я пытаюсь передать массив в виде GET, но URL выглядит следующим образом:

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

Есть ли лучший способ передать это в MVC? Возможно, как

/search?filter=foo,bar,green 

Заранее спасибо.

ответ

2

Теперь вы можете изменить этот URL-адрес. Он построен браузером.

Вы можете изменить URL-адрес по javascript перед отправкой запроса, но лучшим способом будет использовать шаблон перенаправления post post (PRG).

Вы сначала отправляете сообщение контроллеру и перенаправляете URL-адрес, который вы строите в контроллере. Таким образом, у вас есть полный контроль над URL.

EDIT

Это образец

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». Вы знаете, почему это происходит? Это мое сообщение Действие, привязанное к модели, и затем модель передается в действие Get. public ActionResult Search (ResultsModel m) {ResultsModel model = new ResultsModel {Filters = m.Filters}; return RedirectToAction («Поиск», модель); } – creativeincode

+0

Я обновил сообщение –

Смежные вопросы