Если я не ошибаюсь, лучший способ сделать это - добавить два разных метода контроллера и сопоставить их с двумя разными URL.
public ActionResult Filter1(string criteria1);
public ActionResult Filter2(string criteria1, criteria2);
Тогда у вас есть два определения маршрута:
Это сопоставит этот URL List/Filter/xxCriteria/
с первым контроллером
routes.MapRoute(
"Filter", // Route name
"{controller}/Filter/{criteria1}", // URL with parameters
new { controller = "List", action = "Filter1", criteria="" } // Parameter defaults
);
Это сопоставит этот URL List/Filter/xxCriteriaName/xxxCriteriaRank
со вторым контроллером.Без этого маршрута вы все равно можете отобразить URL для второго метода, но он будет выглядеть так: List/Filter/?criteria1=xx&criteria2=xx
routes.MapRoute(
"Filter2", // Route name
"{controller}/Filter/{criteria1}/{criteria2}", // URL with parameters
new { controller = "List", action = "Filter2", criteria1 = "", criteria2 = "" } // Parameter defaults
);
Надеюсь, это помогло.