zoukankan      html  css  js  c++  java
  • 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     }
  • 相关阅读:
    vue 封装 全局弹窗 js-dom
    vue 封装时间戳 用过滤方法封装
    前端上传img 并且添加水印
    原生ajax 封装
    vue filters 过滤用法 时间戳方法
    node+mysql+vue 搭建前后端分离基础框架
    基于jq div拉拽功能
    进程间通信方式+线程间通信方式
    只能生成栈对象和只能生成堆对象
    linux的基础命令行和shell的区别
  • 原文地址:https://www.cnblogs.com/chenyanbin/p/11279902.html
Copyright © 2011-2022 走看看