ASP.NET MVC——路由系列一 多个路由的优先顺序

一、路由说明

 1)MVC程序的路由配置一般位于App_Start文件夹下的RouteConfig.cs类中。

 

 

 2)程序中设置路由的方式是MVC项目中Global.asax启动类中的 RouteConfig.RegisterRoutes(RouteTable.Routes),此处的            Routes  对象相当于一张路由表,该对象的MapRoute方法能够配置路由。

 

 

3)路由配置是一个静态扩展方法,重载了好多个方法 如图

 

 

第一个参数name:定义该路由的名称(一个服务器后台可以定制多个路由,每个路由都有一个指定的名称,名称必须唯一,否则会提示如下错误,如图1所示)

                   

                                                              图 1 路由注册名称必须唯一

 

 

4)路由的匹配顺序会按照路由注册的先后顺序进行,也就是先注册的路由,会优先进行匹配,如图2

           

                                                                                  图 2 路由注册先后顺序

 

 

 

两个路由的url都能满足/Home/Index/1111,因为name为Default的路由优先注册,所以优先匹配它。

具体细节分析:

情况一:假设输入的url为http://localhost:63810/a/b/c 显然两种url模式都能够匹配得上。默认会进入第一个注册的路由进行匹配

发现找不到名称为a的控制器、和名称为b的动作方法、所以程序会提示如图3所示的错误、而不会进入第二个注册的路由规则。

         

                                                               图 3 找不到指定的控制器和对应的方法

 

 

 

 

小结:也就是说以图2的方式注册的路由、第二个路由的url模式永远都不会被匹配到。

情况二:如要想要输入的url为http://localhost:63810/a/b/c能够正常的响应,那么注册路由的顺序需要调整为图4所示。

              

                                                        图 4 http://localhost:63810/a/b/c路由能够正确匹配

 

 

 

小结:MVC是一种约定大于配置的框架、在url中"{controller}":对应的是控制器,"{action}":对应的是控制器里头的方法,

而"{first}"、"{second}"、"{third}":只是普通的占位符号、如图4所示、a/b/c并不会去匹配对应的控制器、和控制器方法、而

图3就会去匹配a/b/c对应的控制器、和控制器方法。

 

 

 

说明:学习记录

技术交流联系:

QQ:754258817

转载请注明出处!!!!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值