【问题标题】:MVC area route resolutionMVC区域路由解析
【发布时间】:2012-08-30 21:27:39
【问题描述】:

如果您的解决方案中有区域,则使用 MVC3/4,它将尝试解析区域和根级别控制器的顺序是什么?

例如:

是否先尝试根级路由,然后按字母顺序尝试区域级路由?

还是先按字母顺序检查区域级路由,再检查根级?

谢谢

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-routing


    【解决方案1】:

    MVC 解析器首先区域特定路由,然后是根级别路由。这是因为默认情况下您在 Global.asax 中有下一个代码:

    protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas(); //1. registers areas
    
            RegisterGlobalFilters(GlobalFilters.Filters);
            RegisterRoutes(RouteTable.Routes); //2. only after that register root routes
        }
    

    我还没有尝试过,但如果您想改变这种行为,您可以尝试在您的项目中交换这些代码行。

    【讨论】:

    • 那么区域注册的顺序呢?
    • 我刚刚查看了区域注册代码,但没有找到任何特定于订单的代码。在这篇文章中还提到了philliphaydon.com/2011/07/…:“我花了好几个小时才弄明白。MVC 不能保证注册区域的顺序。”您可以在谷歌上搜索如何按特定顺序注册区域的解决方案(我已经看过),但通常区域应该非常独立,因此您不应该注意它们的顺序。这就是它们被创建的原因。
    • 他们解决的顺序肯定很重要吗?这就是为什么你对最不具体的路线做更具体的路线,对吧? (在这种情况下,我关心他们解决的顺序)
    • 是的,你是对的,但通常每条区域路线都以区域名称开头,或者区域名称位于路线中间的某个位置。因此,来自不同地区的相似路线之间不应发生碰撞。
    猜你喜欢
    • 2011-08-07
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 2011-11-15
    • 2010-12-09
    • 2018-05-31
    • 2011-03-17
    相关资源
    最近更新 更多