MVC路由:路由优先级不按预期工作

时间:2013-09-25 10:15:45

标签: asp.net-mvc asp.net-mvc-4 asp.net-mvc-routing

我研究MVC样本我有一个控制器Home和一个动作索引。

我有以下路由注册:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.MapRoute("MyRoute", "{controller}/{action}");

    routes.MapRoute("MyOtherRoute", "App/{action}",
        new { controller = "Home" });
}

根据我的理解,如果请求的路线不匹配(或者匹配产生空结果?!),框架将继续搜索其余的路线......

例如,如果我要导航到/App/Index,我希望我会被重定向到Index控制器的Home方法。

就是这种情况,但只有在“MyRoute”中定义了 之后“MyOtherRoute”或“MyRoute”完全缺失。但如前所述,我得到了HTTP 404

为什么会这样?

2 个答案:

答案 0 :(得分:2)

经过一些研究后在MSDN中找到:

  

匹配发生时,不再评估路线。

显然,如果匹配给出或不给出结果,则没有区别......

答案 1 :(得分:1)

MVC正在验证从顶部开始的路线,您的第一条路线对/App/Index有效。不检查路由是否导致现有控制器/动作。
您必须添加路线,以便更具体的路线在开头,然后它将按您的需要工作。