Я сопоставил маршрут:
routes.MapRoute("test", "/{p1:int}-{p2}", new { controller = "test", action = "int" });
Такой маршрут должен соответствовать int-string, например /1-stuff
, и он работает для таких случаев, однако он не работает для /1-stuff-stuff
.Я предполагаю, что это потому, что маршрут совпадает, а затем параметры отклоняются из-за ограничения int.
Если я удаляю ограничения p1
равно 1-stuff
, а p2
равно stuff
.Есть ли способ правильно применить ограничения или пометить p2 как «жадный» (но не универсальный), поэтому p1
равно 1
и p2
равно stuff-stuff
?
Этоочень важно для создания простых для человека URL-адресов, где идентификаторы находятся впереди, а все в кебабе без дополнительных символов.
Catch-all у меня не работает. Мне нужно, чтобы p2 был привязан к параметру action.Regex не помогает.