一、路由规则:
routes.MapRoute( name: "Default1", url: "more_{root}_{plate}.html", defaults: new { controller = "about", action = "Index", root = UrlParameter.Optional, plate = UrlParameter.Optional } );
<a href="@Url.Action("index", "about", new { root = 1, plate = 2 })">123456</a>
三、在VIew获取参数:
<p>root: @(Url.RequestContext.RouteData.Values["root"])</p> <p>plate: @(Url.RequestContext.RouteData.Values["plate"]) </p>
完成以上三点还不足够,还需要在webconfig配置:
四。简单实例
/***********************RouteFourth路由控制**************************/ routes.MapRoute( name: "RouteFourth2", url: "fourth", defaults: new { controller = "RouteFourth", action = "Index" } ); routes.MapRoute( name: "RouteFourth3", url: "RouteFourth/{id}.html", defaults: new { controller = "RouteFourth", action = "GetID", id = 1 }, constraints: new { id = @"d+" } ); routes.MapRoute( name: "RouteFourth4", url: "RouteFourth/name{name}", defaults: new { controller = "RouteFourth", action = "GetName", name = "空" }, constraints: new { name = @"w+" } ); routes.MapRoute( name: "RouteFourth1", url: "RouteFourth.",//对于以'.'结尾的,直接报错,不会到路由匹配这一步 defaults: new { controller = "RouteFourth", action = "Index" } ); routes.MapRoute( name: "RouteFourth11", url: "RouteFourth.html", defaults: new { controller = "RouteFourth", action = "Index" } ); routes.MapRoute( name: "RouteFourth111", url: "RouteFourth{ext}", defaults: new { controller = "RouteFourth", action = "Index" }, constraints: new { ext=@"(.abc)|(.htm)"} );
五。匹配问题
更多: