Как создать маршрут для сопоставления всех путей, начинающихся с заданного префикса? - PullRequest
1 голос
/ 03 октября 2011

В моем приложении MVC я хочу создать маршрут таким образом, чтобы при запросе пользователем URL-адреса, начинающегося с префикса, вызывалось определенное действие.

Например, я хочу маршрут, который бы отображал processData{whatever} на действие, чтобы когда пользователь запрашивал processData, processData.asmx или processDataZOMG или что-либо еще с префиксом processData, вызывалось действие. 1008 *

Я попробовал следующий маршрут

routes.MapRoute(
    @"ProcessData", @"processData*", //<<<< note asterisk
    new { controller = @"Api", action = @"ProcessData" } );

но он не совпадает с processData и чем-либо с этим префиксом - сопоставление маршрутов проваливается, и запрос перенаправляется на главную страницу.

Как создать маршрут, который соответствует всем путям с определенным префиксом для конкретной пары контроллер-действие?

Ответы [ 2 ]

0 голосов
/ 03 октября 2011

Вы можете использовать ограничения маршрута:

routes.MapRoute(
    "ProcessData", // Route name
    "{token}", // URL with parameters
    new { controller = "Api", action = "ProcessData" }, // Parameter defaults
    new { token = @"^processdata.*" } // constraints
);
0 голосов
/ 03 октября 2011

Попробуйте следующее: Обновление : это решение не работает, обратитесь к предложению, которое я предлагаю, в своем комментарии к этому ответу.

routes.MapRoute(
    @"ProcessData", @"processData/{*appendix}", //<<<< note asterisk
    new { controller = @"Api", action = @"ProcessData" } );
...