Насколько я знаю. .Net маршрутизация не позволяет вам делать несколько обнуляемых параметров, как это. Несколько параметров будут работать только в том случае, если им не хватает работы в обратном направлении с конца, а разделитель также отсутствует, поэтому вы получите совпадения на
user/find,bob,2,live
user/find,bob,2
user/find,bob
user/find
Было бы намного проще использовать строки запросов для того, что вы пытаетесь сделать.
Редактировать на основании комментария:
Если это необходимо, вы можете попробовать сделать это таким образом (хотя это не очень хороший подход)
Измените свой путь, чтобы соответствовать
{Controller}/{Action},{*parameters}
Убедитесь, что на действие и контроллер наложено ограничение, чтобы оно ограничивалось как можно меньшим количеством.
Переименуйте каждое действие, которое приведет ваш полный список к чему-то другому, добавив стандартный префикс к каждому из них, что будет самым простым способом, и добавьте атрибут [NonAction]
. Добавьте новый метод с исходным именем, который принимает строку, эта строка представляет собой строку переменных, разделенных запятыми. В этом методе разбить строку и вернуть исходное действие, передавая значения из разбиения.
Итак, вы идете от:
public ActionResult Find(string name, int page, string status){
//Do stuff here
return View(result);
}
К * * 1023
public ActionResult Find(string parameters){
string name;
int? page;
string status;
//split parameters and parse into variables
return FindAction(name, page, status);
}
[NonAction]
public ActionResult FindAction(string parameters){
//Do what you did in your previous Find action
return View(results);
}