为什么不';t此路由到默认操作

本文关键字:路由 默认 操作 为什么不 | 更新日期: 2023-09-27 18:20:07

所以我映射了这个路线:

routes.MapRoute(
     "Solutions",
     "{lang}/Solutions/{controller}/{action}",
     new { lang="en-US", controller = "WhatWeDo", action = "Index"}
    );

当我转到"

/en-GB/Solutions/SolutionA/Index/

它的路线很好,但

/en-GB/Solutions/SolutionA/

根本不走路线。然而,如果我去掉lang参数,那么路线看起来像

routes.MapRoute(
     "Solutions",
     "Solutions/{controller}/{action}",
     new { controller = "WhatWeDo", action = "Index"}
    );

然后我去

/Solutions/SolutionA/

它的路线很好。有什么想法吗?我不想一直为这个路由指定默认操作。谢谢

为什么不';t此路由到默认操作

您在global.asax中定义路由的顺序是什么,这可能与问题有关,但我最初猜测它与等默认路由匹配

controller: en-GB  
action: Solutions
id : SolutionA

您可以在路由上设置某种正则表达式匹配,以将您的语言从"默认"路由中排除?有关使用regex进行路由筛选的详细信息,请尝试此链接http://www.iridescence.no/post/Defining-Routes-using-Regular-Expressions-in-ASPNET-MVC.aspx