Из-за факторов, не зависящих от меня, мне нужно обрабатывать URL-адреса следующим образом:
Я бы хотел направить их к определенному контроллеру / действию с уже проанализированным и связанным val (т. Е. Аргументом к действию).
В идеале мое действие должно выглядеть так:
ActionResult BackwardCompatibleAction(int val)
Я нашел этот вопрос: ASP.Net MVC маршрутизирует устаревшие URL-адреса, передающие идентификаторы строки запроса в действия контроллера , но перенаправления не принимаются.
Я пробовал маршруты, которые анализируют часть строки запроса, но любой маршрут с вопросительным знаком недопустим.
Мне удалось перенаправить запрос с помощью:
routes.MapRoute(
"dosomething.asp Backward compatibility",
"{dosomething}.asp",
new { controller = "MyController", action = "BackwardCompatibleAction"}
);
Однако, оттуда единственный способ получить значение val =? это через Request.QueryString. Хотя я мог бы проанализировать строку запроса внутри контроллера, это усложнило бы тестирование действия, и я бы предпочел не иметь этой зависимости.
Я чувствую, что могу что-то сделать с маршрутизацией, но я не знаю, что это такое. Любая помощь будет принята с благодарностью.