如何创建匹配从给定前缀开始的所有路径的路由?

时间:2011-10-03 08:53:35

标签: asp.net asp.net-mvc iis url-routing asp.net-mvc-routing

在我的MVC应用程序中,我想创建一个路由,当用户请求以前缀开头的URL时,会调用一些特定的操作。

例如,我想要一条将processData{whatever}映射到某个操作的路线,以便当用户请求processDataprocessData.asmxprocessDataZOMG或其他任何processData时1}}前缀调用该动作。

我尝试了以下路线

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

但它不匹配processData和任何带有该前缀的内容 - 路由匹配失败,请求被重定向到主页面。

如何将具有特定前缀的所有路径匹配到特定控制器 - 操作对的路由?

2 个答案:

答案 0 :(得分:0)

请尝试以下操作: 更新 :此解决方案不起作用,请参阅我在评论中提供的解决方案这个答案。

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

答案 1 :(得分:0)

您可以使用路线限制:

routes.MapRoute(
    "ProcessData", // Route name
    "{token}", // URL with parameters
    new { controller = "Api", action = "ProcessData" }, // Parameter defaults
    new { token = @"^processdata.*" } // constraints
);