1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.Mvc; 6 using System.Web.Routing; MVCDemo 9 { RouteConfig 11 { RegisterRoutes(RouteCollection routes) 13 { ); 15 16 routes.MapRoute( , , , action = , id = UrlParameter.Optional } 20 21 ); 22 } 23 } 24 } 25
View Code/Controllers/RouteDemo
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.Mvc; MVCDemo.Controllers 8 { RouteDemoController : Controller 10 { ActionResult Index() 14 { 15 return View(); 16 } 17 } 18 }
View Code/Controllers/NewFolder1/RouteDemo
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.Mvc; MVCDemo.Controllers.NewFolder1 8 { RouteDemoController : Controller 10 { ActionResult Index() 14 { ); 16 } 17 } 18 }
View Code测试结果
3 路由概述(特性路由)
特性路由是在ASP.NET MVC 5中新增的,传统路由ASP.NET MVC 1中就有了。
从内容上来看,特性路由的内容与传统路由差不多,同样有路由URL、路由值、控制器路由、路由约束和路由默认值等。鉴于篇幅限制,在这里就简单的概述一下,不作详细论述,后期有时间或者有朋友需要,再论述。
定义:特性路由就是将路由URL定义在控制器上或控制器内的方法上,而不像传统路由将路由URL定义在RouteConfig.cs中。对比如下
3 路由生成URL
路由两个重要职责:匹配传入的URL请求和构造与特定路由对应的URL,概括之匹配URL和构造URL。在生成URL时,生成URL的情趣应该首先与选择用来生成URL的路由相匹配,这样路由就可以在处理传入或传出的URL时成为完整的双向系统。原则上,开发人员应该提供一组路由值,以便路由系统从中选中第一个能够匹配URL的路由。
3.1 URL生成的高层系概述
路由的核心是一个非常简单的算法,该算法基于一个由RouteCollection类和RouteBase类组成的简单抽象对象。可以采用多种方法来生成URL,但这些方法都以调用RouteCollection.GetVirtualPath的一个重载方法而结束。RouteCollection.GetVirtulPath方法公有两个重载版本,下面的代码展示它们的方法签名: