ASP.Net MVC 路由及路由调试工具RouteDebug

一、路由规则

  1、可以创建多条路由规则,每条路由的name属性不相同

  2、路由规则有优先级,最上面的路由规则优先级越高

App_Start文件下的:RouteConfig.cs

 1         public static void RegisterRoutes(RouteCollection routes)
 2         {
 3             routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
 4 
 5             routes.MapRoute(
 6                 name: "Default2",
 7                 url: "{controller}-{action}",
 8                 defaults: new { controller = "HomeDemo", action = "Index" }
 9             );
10 
11             routes.MapRoute(
12                 name: "Default",
13                 url: "{controller}/{action}/{id}",
14                 defaults: new { controller = "HomeDemo", action = "Index", id = UrlParameter.Optional }
15             );
16         }
17     }

二、路由调试工具

  当为我们的应用程序注册多个路由后,由于注册不当,得不到预期的结果。为什么会发生这种情况,请求具体走了哪个路由?这个时候主人公RegisterRoutes上场了。

第一步:先下载dll类库,没有的请到我百度云盘下载

链接:https://pan.baidu.com/s/1jJ1W88cOuTrdooLySnGVSg
提取码:097u
第二步:引入包:RouteDebug

第三步:到Global.asax中重写测试路径

 1     public class MvcApplication : System.Web.HttpApplication
 2     {
 3         protected void Application_Start()
 4         {
 5             AreaRegistration.RegisterAllAreas();
 6             FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
 7             RouteConfig.RegisterRoutes(RouteTable.Routes);
 8             BundleConfig.RegisterBundles(BundleTable.Bundles);
 9 
10             RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes); //重写测试路径
11         }
12     }

第四步:运行网站,进行分析路由规则

 

搞定!~~

 三、路由的约束

 1     public class RouteConfig
 2     {
 3         public static void RegisterRoutes(RouteCollection routes)
 4         {
 5             routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
 6 
 7             routes.MapRoute(
 8                 name: "Default2",
 9                 url: "{controller}-{action}",
10                 defaults: new { controller = "HomeDemo", action = "Index" },
11                 constraints:new {Controller=@"^\d+$" }, //控制器约束
12                 namespaces:new string[] { "MVCDemo2.Controllers" } //命名空间约束
13             );
14 
15             routes.MapRoute(
16                 name: "Default",
17                 url: "{controller}/{action}/{id}",
18                 defaults: new { controller = "HomeDemo", action = "Index", id = UrlParameter.Optional }
19             );
20         }
21     }

猜你喜欢

转载自www.cnblogs.com/chenyanbin/p/11279902.html
今日推荐