【问题标题】:Why doesn't this route to the default action?为什么这不路由到默认操作?
【发布时间】:2012-01-10 19:49:16
【问题描述】:

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

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/

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

【问题讨论】:

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


    【解决方案1】:

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

    controller: en-GB  
    action: Solutions
    id : SolutionA
    

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

    【讨论】:

    • 谢谢,这是路由的顺序,我认为正则表达式路由看起来确实很酷,我可能最终会切换到那些以获得更好的本地化。
    • 很高兴我能帮上忙!祝你的项目好运。
    猜你喜欢
    • 2018-02-15
    • 1970-01-01
    • 2011-02-23
    • 1970-01-01
    • 2011-06-04
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    • 2023-02-02
    相关资源
    最近更新 更多