• 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     }
  • 相关阅读:
    __doPostback在客户端控件中的作用
    BlogEngine学习二:基于ICallbackEventHandler的轻量级Ajax方式
    JS操作XML数据备忘
    JS解析DataSet.GetXML()方法产生的xml
    JS中的prototype的使用方式
    实体类的二进制序列化
    PostgreSQL的.NET驱动程序Npgsql中参数对象的一个Bug
    PDF.NET的SQL日志
    PostgreSQL的PDF.NET驱动程序构建过程
    使用XSD编写具有智能提示的XML文件(以SQLMAP脚本为实例)
  • 原文地址:https://www.cnblogs.com/chenyanbin/p/11279902.html
Copyright © 2020-2023  润新知