MVC MVC 路由详解

◇◆丶佛笑我妖孽 提交于 2020-01-20 23:39:41

在项目中我们引用了System.Web.Routing;   Routing的作用:

确定Controller

确定Action

确定其他参数

根据识别出来的数据, 将请求传递给Controller和Action.

 

Global.asax中

 

在App_Start目录中的RouteConfig.cs文件

注册一条路由规则

name 参数:

   规则名称, 可以随意起名.不可以重名,否则会发生错误,路由集合中已经存在名为 “Default” 的路由。路由名必须是唯一的。 

url 参数:

 url获取数据的规则, 这里不是正则表达式, 将要识别的参数括起来即可, 比如: {controller}/{action}

defaults 参数:

 url参数的默认值. 我们只建立了一条url获取数据规则: {controller}/{action}  那么这时就会为action参数设置defaults参数中规定的默认值. new { controller = "Home", action = "Index" }

 

多条路由规则

 

 

RouteDebug.dll

RouteDebug.dll调试类库放入packages包下,packages文件夹下包含项目用到的所有第三方库。 然后添加引用RouteDebug.dll到项目中。

在Global.asax.cs注册路由之后添加代码:

RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);   重写了路由调试的地址,将已经注册了的路由规则进行测试。

 

例如:

  //从繁到简的写法,参数多的写前面/难匹配的写前面   多个路由设计

          //  routes.MapRoute(
          //name: "FF",
          //url: "{controller}-{action}-{id}-{name}",
          //defaults: new { controller = "Home", action = "Index" }
          //);

          //  routes.MapRoute(
          //  name: "DD",
          //  url: "{controller}-{action}-{id}",
          //  defaults: new { controller = "Home", action = "Index"}
          //  );

          //  routes.MapRoute(
          //  name: "SS",
          //  url: "{controller}-{action}",
          //  defaults: new { controller = "Home", action = "Index"}
          //  );          

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

启用测试路由,不管你打开那个Action都会跳到它的测试页面去 

  RouteConfig.RegisterRoutes(RouteTable.Routes); //注册路由
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            //RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes); //测试路由

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!