//直接方法重载+匿名对象
//最基础的路由规则,也是默认的路由规则 routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } );
//构造路由然后添加 Route myroute = new Route("{controller}/{action}", new MvcRouteHandler()); routes.Add("MyRoute0", myroute);
//添加命名空间的路由
//在Action里面定义了一个参数"catchall"用来接收Url中除了Id之外其他所有的参数值
//catchall 这个就可以实现了多个参数的传递
//跨命名空间路由 routes.MapRoute( "AddContollerRoute", "Home/{action}/{id}/{*catchall}", new { controller = "Home", action = "Index", id = UrlParameter.Optional }, new[] { "URLsAndRoutes.AdditionalControllers" } ); routes.MapRoute( "MyRoute1", "{controller}/{action}/{id}/{*catchall}", new { controller = "Home", action = "Index", id = UrlParameter.Optional }, new[] { "URLsAndRoutes.Controllers" } );
//关于{id}后面增加{*catchall}这个配置之后,在action的参数ID之后需要增加 string catchall这个参数来获取除ID之外的所有参数,案例如下:
public ActionResult abcTest(string id,string catchall) { string temp = id; string tt = catchall;
return Content(id); }
//可变长度路由 + 正则表达式匹配路由
//正则表达式 ,在路由配置中,我们做了这样的规则,只匹配Controller名称以H开头的 routes.MapRoute( "MyRoute2", "{controller}/{action}/{id}/{*catchall}", new { controller = "Home", action = "Index", id = UrlParameter.Optional }, new { controller = "^H.*", action = "^Index$|^About$" }, new[] { "URLsAndRoutes.Controllers" } );
//指定请求方法 routes.MapRoute("MyRoute3", "{controller}/{action}/{id}/{*catchall}", new { controller = "Home", action = "Index", id = UrlParameter.Optional }, new { controller = "^H.*", action = "Index|About", httpMethod = new HttpMethodConstraint("GET") }, new[] { "URLsAndRoutes.Controllers" } );
