为什么路由器总是使用路由参数的默认值而不是提供的值?

时间:2018-04-25 18:27:22

标签: asp.net-mvc asp.net-mvc-5

我错误地将所有有效网址定向到HomeController并且无效网址被正确拒绝。

我有以下控制器:

HomeController
ThisController
ThatController
MyController  

这是我的RouteConfig:

public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                    "StaticRoute", 
                    "My/Index", 
                    new { controller = "This", action = "Index" }

            routes.MapRoute(
                    "Default", 
                    "{controller}/{action}/{id}", 
                    new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }
    }

所有以下网址都指向" HomeController":

/  
/Home  
/Home/Index  
/This  
/This/Index  
/That 

以下网址被正确定向到" ThisController":

/My/Index  

以下网址正确地被404化:

/Home/NotExists  
/This/NotExists  
/His  
/Her/Index  

看起来默认路由始终使用默认值,而不是路由参数。我对路由器的理解是错误还是做了其他错误?

修改
所有控制器都有默认的未修饰索引方法,没有参数

0 个答案:

没有答案