Asp.net mvc 关于MVC路线的困惑
下面的问题是什么Asp.net mvc 关于MVC路线的困惑,asp.net-mvc,routes,Asp.net Mvc,Routes,下面的问题是什么 routes.MapRoute( "Default2", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = "test" } // Parameter defaults ); routes.MapRoute(
routes.MapRoute(
"Default2", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "test" } // Parameter defaults
);
routes.MapRoute(
"Default1", // Route name
"{controller}/{action}/{name}", // URL with parameters
new { controller = "Home", action = "Report", name = "" } // Parameter defaults
);
当我导航到/home/index“id”时,参数采用默认值“test”,但当我导航到home/report时,name参数为null
简而言之,如果路由定义是路由表中的第一个,则该参数将采用其默认值。但是下面的其他人没有。这两个路由
{controller}/{action}/{id}
和{controller}/{action}/{name}
是不明确的。它无法区分/home/index/id
和/home/report/abc
,它始终是路由定义中被捕获的第一条路由,因为在第二种情况下,它认为id=“abc”
使用Phil Haack Routes调试器。。以更清楚地了解路线在不同路径上的反应
那么,我应该如何为参数指定默认值呢?我是否应该通过将{controller}参数更改为真实的控制器名称来为每个控制器创建不同的路由?还有其他方法吗?更改{controller}无效。必须为每个操作定义一个路由。