1

我研究了一个 MVC 示例,我有一个控制器 Home 和一个动作索引。

我有以下路由注册:

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

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

据我了解,如果请求的路由不匹配(​​或 MATCH GIVES A NULL RESULT?!),框架将继续在其余路由中搜索......

例如,如果我将导航到/App/Index,我希望我将被重定向到Controller的Index方法。Home

就是这样,但只有在“MyRoute”被定义之后, “MyOtherRoute”或“MyRoute”根本就没有了。但如前所述,我得到了一个HTTP 404.

为什么这个?

4

2 回答 2

2

经过一些研究后在MSDN中发现:

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

显然,那场比赛是否给出结果没有区别......

于 2013-09-25T11:05:52.317 回答
1

MVC 正在从顶部验证路由,并且您的第一条路由对/App/Index. 不检查路由是否指向现有的控制器/动作。
您必须添加路线,以便更具体的路线位于开头,然后它将根据您的需要工作。

于 2013-09-25T10:33:16.680 回答