一、路由规则
1、可以创建多条路由规则,每条路由的name属性不相同
2、路由规则有优先级,最上面的路由规则优先级越高
App_Start文件下的:RouteConfig.cs
1 public static void RegisterRoutes(RouteCollection routes)
2 {
3 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
4
5 routes.MapRoute(
6 name: "Default2",
7 url: "{controller}-{action}",
8 defaults: new { controller = "HomeDemo", action = "Index" }
9 );
10
11 routes.MapRoute(
12 name: "Default",
13 url: "{controller}/{action}/{id}",
14 defaults: new { controller = "HomeDemo", action = "Index", id = UrlParameter.Optional }
15 );
16 }
17 }
二、路由调试工具
当为我们的应用程序注册多个路由后,由于注册不当,得不到预期的结果。为什么会发生这种情况,请求具体走了哪个路由?这个时候主人公RegisterRoutes上场了。
第一步:先下载dll类库,没有的请到我百度云盘下载
链接:https://pan.baidu.com/s/1jJ1W88cOuTrdooLySnGVSg 提取码:097u 第二步:引入包:RouteDebug

第三步:到Global.asax中重写测试路径
1 public class MvcApplication : System.Web.HttpApplication
2 {
3 protected void Application_Start()
4 {
5 AreaRegistration.RegisterAllAreas();
6 FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
7 RouteConfig.RegisterRoutes(RouteTable.Routes);
8 BundleConfig.RegisterBundles(BundleTable.Bundles);
9
10 **RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);** //重写测试路径
11 }
12 }
第四步:运行网站,进行分析路由规则

搞定!~~
三、路由的约束
1 public class RouteConfig
2 {
3 public static void RegisterRoutes(RouteCollection routes)
4 {
5 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
6
7 routes.MapRoute(
8 name: "Default2",
9 url: "{controller}-{action}",
10 defaults: new { controller = "HomeDemo", action = "Index" },
11 **constraints:new {Controller=@"^\d+$" },** //控制器约束
12 **namespaces:new string[] { "MVCDemo2.Controllers" }** //命名空间约束
13 );
14
15 routes.MapRoute(
16 name: "Default",
17 url: "{controller}/{action}/{id}",
18 defaults: new { controller = "HomeDemo", action = "Index", id = UrlParameter.Optional }
19 );
20 }
21 }