В моем приложении MVC2 используется компонент, который заставляет последующие AJAX-вызовы возвращаться к тому же действию, которое вызывает все виды ненужного доступа к данным и их обработки на сервере. Поставщик компонента предлагает перенаправить эти последующие запросы на другое действие. Последующие запросы отличаются тем, что у них есть конкретная строка запроса, и я хочу знать, могу ли я наложить ограничения на строку запроса в моей таблице маршрутов.
Например, первоначальный запрос приходит с URL-адресом, таким как http://localhost/document/display/1.. Это может быть обработано маршрутом по умолчанию. Я хочу написать собственный маршрут для обработки URL-адресов, таких как http://localhost/document/display/1?vendorParam1=blah1&script=blah.js и http://localhost/document/display/1?vendorParam2=blah2&script=blah.js, путем определения «продавца» в URL-адресе.
Я попробовал следующее, но выдает System.ArgumentException: The route URL cannot start with a '/' or '~' character and it cannot contain a '?' character.
:
routes.MapRoute(
null,
"Document/Display/{id}?{args}",
new { controller = "OtherController", action = "OtherAction" },
new RouteValueDictionary { { "args", "vendor" } });
Могу ли я написать маршрут, который учитывает строку запроса? Если нет, у вас есть другие идеи?
Обновление: Проще говоря, можно ли написать ограничения маршрутизации таким образом, чтобы http://localhost/document/display/1 направлялось в действие DocumentController.Display
, а http://localhost/document/display/1?vendorParam1=blah1&script=blah.js направлялось в действие VendorController.Display
? В конце концов, я бы хотел, чтобы любой URL, строка запроса которого содержит «vendor», был направлен на действие VendorController.Display
.
Я понимаю, что первый URL может быть обработан по умолчанию, но как насчет второго? Возможно ли это сделать вообще? После многих проб и ошибок с моей стороны, похоже, что ответ "Нет".