У меня есть сайт с двумя форматами поиска, вызывающими один и тот же контроллер и действие. Первая форма для автомобилей, вторая для мотоциклов. Каждая форма имеет несколько фильтров поиска. Эти фильтры многозначны.Передача нескольких многозначных параметров контроллеру MVC из другой формы поиска
Мой файл по маршруту:
routes.MapRoute("Cars",
"search/cars",
new { controller = "Search", action = "Index", SearchType = "Cars", Param1 = "", Param2="" }, null);
routes.MapRoute("Motorcycles",
"search/moto",
new { controller = "Search", action = "Index", SearchType = "Moto", Param3 = "", Param4="" }, null);
Так называя "mywebsite.com/search/cars?Param1=BMW & Param1 = VW" должен получить мне эти значения в мой контроллер:
SearchType = "Cars"
Param1[] = {"BMW", "VW"}
Есть ли способ избежать действия в контроллере поиска, объявленного как:
public ActionResult Index(string SearchType, string Param1, string Param2, string Param3, string Param4){}
вместо этого имеет одну переменную params [], которая затем будет содержать пары ключевых значений? Параметры в обоих случаях имеют разные имена, поэтому я не всегда могу использовать одно и то же имя. Также каждая страница поиска имеет различное количество параметров.
Ваши определения маршрута бессмысленны - они идентичны. Почему бы не разделить методы действий в 'SearchController' - скажем,' public ActionResult Cars (строки [] models) 'и' public ActionResult Motocycles (string [] models) '? И ваши маршруты будут «route.MapRoute» («Автомобили», «поиск/автомобили», новый {controller = «Поиск», action = «Cars»}) '' и 'routes.MapRoute (« Автомобили »,« поиск »/motocycles ", new {controller =" Search ", action =" Motocycles "})' –
И имеют определения маршрута с параметрами Param1 = "", Param2 = "" и т. д. не имеет никакого смысла (как вы можете видеть, они добавляются как параметры строки запроса, потому что вы отправляете форму - ваш браузер не знает ваших определений roue) –