美文网首页
ASP.NET MVC Route 由浅入深系列之十一:MVC

ASP.NET MVC Route 由浅入深系列之十一:MVC

作者: 王维_9bbf | 来源:发表于2019-05-17 09:14 被阅读0次
    MVC Route的用法

      通过前文的学习(请参见:<<ASP.NET MVC Route 由浅入深系列之一>> 和<<ASP.NET MVC Route 由浅入深系列之十>>),我们知道Web Form的路由是将一个URL映射为一个.ASPX物理文件,MVC 路由是将一个URL映射为一个Controller,通过调用Action返回View(或者可以大致理解为"cshtml页面")。和Web Form的路由比起来,MVC 的路由虽然形式上看起来不一样,但其本质却是一样的,两者其实都是映射到了一个“物理页面”,只是Web Form是直接映射,而MVC是间接映射。下面我们主要分享下在.NET MVC中,路由是怎样配置和使用的。

        新建一个MVC项目,我这里用的是VS2012,打开App_Start下的RouteConfig.cs,我们可以看到MVC已经帮我们配置好了一个路由:

    MVC配置路由Pattern

      第一个方法:IgnoreRoute(),顾名思义,这是代表{resource}.axd/{*pathInfo}这种Pattern的Url不参与路由的匹配,其中{resource}.axd代表形如:WebReosurce.axd的URL。{*pathInfo}也是一个路由变量,其名称为pathInfo,前面的星号代表CatchAll,也就是"抓到全部"的意思,匹配类似于a/b/c/d这样的URL,有点类似于正则表达式.

         第二个方法:MapRoute(),这个方法是RouteCollection的一个扩展方法,位于System.Web.Mvc命名空间下,可以从源代码看得出,这个方法实际上调用的是RouteCollection的Add()方法,将Route添加到了RouteCollection集合。如下所示:

    RouteCollection

      我们可以看到这个方法有很多重载,下面我们介绍下各个参数的用法:

    1)name:路由的名称。

    2)url:Route Url Pattern(类似于正则表达式),用于匹配要访问的Url.例如Route Url Pattern定义为: "{controller}/{action}",我们访问的Url为:http://localhost/Home/Index,那么此Url就匹配成功。

    3)Defaults:默认的路由变量,如果我们访问的Url匹配Route Url Pattern不到时,那么会尝试带入Defaults设置的路由变量。例如访问http://localhost/,匹配{controller}/{action}不成功,那么MVC会将Defaults:{controller = "Home", action = "Index"}的路由变量加入,变成http://localhost/Home/Index,这样就匹配成功,接下来MVC Framework就会去"调用"HomeController的Index方法,从而返回Index.cshtml。

     上面介绍了MVC Route的设置和各个参数的含义,下文我们将进入MVC 路由的匹配,这是MVC路由的核心,也是深入理解ASP.NET MVC Framework的基础。

    相关文章

      网友评论

          本文标题:ASP.NET MVC Route 由浅入深系列之十一:MVC

          本文链接:https://www.haomeiwen.com/subject/hqzgaqtx.html