为什么这条路由没有默认动作?

时间:2012-01-10 19:49:17

标签: c# model-view-controller localization asp.net-mvc-routing global-asax

所以我已经映射了这条路线:

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/

路线很好。有任何想法吗?我不想一直为此路由指定默认操作。感谢。

1 个答案:

答案 0 :(得分:2)

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

controller: en-GB  
action: Solutions
id : SolutionA

您可以做的是在路线上设置某种正则表达式匹配,以将您的语言从“默认”路线中排除?有关使用正则表达式进行路由过滤http://www.iridescence.no/post/Defining-Routes-using-Regular-Expressions-in-ASPNET-MVC.aspx

的详细信息,请尝试使用此链接