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中区域功能的使用。区域功能是比如有许多的控制器,便可以设置不同区域,便于查找,这样每一个区域变会有一个路由,如果两个区域有相同的控制器名称的话,就必须要设置命名空间,不然的话,会报错,设置好命名空间后,这个问题便可以解决