2011-10-03 20 views
1

在我的MVC应用程序中,我想创建一个路线,以便当用户请求以前缀开头的URL时,会调用某个特定的操作。如何创建一个匹配以给定前缀开头的所有路径的路由?

例如,我想这将映射到processData{whatever}的行动路线,这样,当用户请求processDataprocessData.asmxprocessDataZOMG或任何其他与该行动被调用processData前缀。

我尝试以下航线

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

,但它不与该前缀匹配processData,任何事情 - 路线匹配落空和请求重定向到主页。

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

回答

0

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

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

这不符合'processDataX'。 – sharptooth

+0

你说得对。然而,你可以实现一个自定义的'IRouteHandler'来检查最后一个斜杠后面的部分是否以“processData”开始。 –

0

您可以使用路由约束:

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