Использовать маршрут регулярного выражения. Что-то вроде следующего может соответствовать параметру {variant}
с 1 или более конечными цифрами
routes.MapRoute(
"Title",
"Controller/something/{variant}/Action",
new { controller = "Controller", action = "Action" },
new { variant = @"something\d+" }
);
Ваш маршрут выглядит немного странно (возможно, в нем отсутствуют некоторые фигурные скобки), но мой ответ описывает, как вы можете использовать регулярные выражения для ряда параметров в вашем маршруте.
С вашим точным маршрутом, Контроллер / что-то / {вариант} / Действие (опять же, это странно), мой сопоставленный маршрут будет перехватывать запросы вроде:
/Controller/something/something123/Action
/Controller/something/something1/Action
но не
/Controller/something/somethingelse/Action
/Controller/something/nothing/Action
Редактировать
Если {variant}
не имеет шаблона, то я не думаю, что вы можете использовать регулярные выражения. В противном случае маршрутизация не была бы разработана таким образом.
Если вы хотите, чтобы более одного параметра были переменными, используйте более одного регулярного выражения
routes.MapRoute(
"Title",
"Controller/{something}/{variant}/Action",
new { controller = "Controller", action = "Action" },
new { variant = @"something\d+", something = @"(something|somethinglese)" }
);
Если вам нужно, чтобы {something}
было необязательным, я не совсем помню, но вам, возможно, придется переместить его к последнему параметру и изменить маршрут на:
routes.MapRoute(
"Title",
"Controller/{variant}/Action/{something}",
new { controller = "Controller", action = "Action", something = UrlParameter.Optional },
new { variant = @"something\d+", something = @"(something|somethinglese)" }
);