ASP.NET MVC路由模块

asp.net mvc里面有个路由模块,这模块是访问网站最开始匹配控制器的作用。这是golbal里面的注册路由

   //注册路由规则,应用程序一开始的时候已经将路由规则注册到了路由表里面去了。
            RegisterRoutes(RouteTable.Routes);

 源地址:http://www.cnblogs.com/sixiangqimeng/p/3562285.html

        public static void RegisterRoutes(RouteCollection routes)
        {

            //1、 路由规则 key必须是唯一的。
            //2、 路由规则是有顺序。如果前面的规则已经被匹配上了,那么后续的规则就不被匹配了。
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                "Default", // 路由规则:名称,必须是唯一的。
                "{controller}/{action}/{id}", // 带有参数的 URL  http://localhost/home/index  =>controller:home
                //action:index
                new { controller = "UserInfo", action = "Index", id = UrlParameter.Optional }, // 参数默认值
               new { },//约束参数,约束 控制器,约束action必须符合某个正在表达式。
                new string[] { "MvcApplication1.Controllers" }//约束控制器必须是在某个命名空间下。
            );


            routes.MapRoute(
               "Default2", // 路由规则:名称,必须是唯一的。
               "{controller}-{action}/{id}", // 带有参数的 URL  http://localhost/home/index  =>controller:home
                //action:index
               new { controller = "Ajax", action = "Index", id = UrlParameter.Optional } // 参数默认值
           );


 routes.MapRoute(
               "Default3", "{*values}"
               new { controller = "home", action = "Index", } // 参数默认值
           );


        }

三种路由模式,首先要说明,路由模块是可以先写多个路由规则,但是路由名称一定要唯一,不然的话,会报错,然后就是匹配规则,没什么好说的。里面有重装,可以匹配控制器模式,
 new string[] { "MvcApplication1.Controllers" }这个是定义在某个命名空间下进行搜索。这个是配合MVC中区域功能的使用。区域功能是比如有许多的控制器,便可以设置不同区域,便于查找,这样每一个区域变会有一个路由,如果两个区域有相同的控制器名称的话,就必须要设置命名空间,不然的话,会报错,设置好命名空间后,这个问题便可以解决

 源地址:http://www.cnblogs.com/sixiangqimeng/p/3562285.html

原文地址:https://www.cnblogs.com/sixiangqimeng/p/3562285.html