MVC的路由机制

MVC的默认路由可以在Global.asax.cs文件的RegisterRoutes方法中设置,其结构非常的简单易用,可以匹配各种形式,

路由配置可以由三个部分组成,最常见的就是{controller}/{action}/{id},只要这三个部分不连续出现,有间隔符,那么都可以匹配,

比如可以是{controller}-{action}-{id},

也可以是{controller}·{action}·{id},

喜欢的话还可以添加各种奇怪的东西,比如 lalal/{controller}·{action}·{id},可以匹配lalal/controller·action·100酱紫

不过要注意的问题是,路由匹配是根据加入顺序依次进行的,

产品详情的链接是:http://localhost/ProductOffline/product/ProductDetail/142,

产品目录的链接是:http://localhost/ProductOffline/ProductCategory/ProductCategoryDetail/25

如果设置的路由是如下,先声明产品详情路由,再声明ProductCategory路由

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
       //产品详情路由
            routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{ID}",// URL with parameters
                new { controller = "product", action = "productlist",productid=UrlParameter.Optional} // Parameter defaults

            );
        //产品目录路由
 routes.MapRoute(
                "ProductCategory", // Route name
                "ProductCategory/ProductCategoryDetail/{ProductCategoryID}",// URL with parameters
                new { controller = "ProductCategory", action = "ProductCategoryDetail"} // Parameter defaults

            );

        }

那么在跳转 http://localhost/ProductOffline/ProductCategory/ProductCategoryDetail/25 时会报错,

因为已经匹配到了第一个路由,而第一个路由中,是没有ProductCategoryController及ProductCategoryDetailAction


所以,需要像下面这样写,就可以匹配到正确的路由了:)

 public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                "ProductCategory", // Route name
                "ProductCategory/ProductCategoryDetail/{ProductCategoryID}",// URL with parameters
                new { controller = "ProductCategory", action = "ProductCategoryDetail"} // Parameter defaults

            );

            routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{ProductID}",// URL with parameters
                new { controller = "product", action = "productlist",productid=UrlParameter.Optional} // Parameter defaults

            );

        }
时间: 2024-10-10 15:23:13

MVC的路由机制的相关文章

MVC路由机制(转)

今天我来缕一下MVC的路由机制,因为使用MVC已经快一年了,之前也只是上手,没有系统去理会.项目完了,结合实际使用,回过头来深入一下. MVC 学习索引(点击即可) 一个请求进入IIS后 传统ASP.NET 路由部分 1.IIS根据文件类型将请求转交给相应的处理程序,如果属于ASP.NET文件,则将请求转发给aspnet_isapi.dll.(注:在II6和IIS7上的处理方式是有区别的) 2. HTTP处理模块UrlRoutingModule接收到请求后,循环调用其RouteCollectio

MVC5之路由机制

---恢复内容开始--- MVC是一种模式,是基于asp.net上的一种设计.路由机制不属于MVC,路由机制属于asp.net.因此,mvc的路由机制就是基于asp.net路由机制上的一种“自定制”. ASP.Net路由系统中的核心就是Route对象,每一个Route对应一个路由模板,多个Route对象再加上匹配方法共同构成一个路由表,更确切表述为路由机制(即RouteTable类,该类位于命名空间System.Web.Routing). RouteTable类中的静态属性Routes具有一个根

路由机制

9.1 理解URL URL满足的要求: l 域名易于记忆和拼写 l 简短.易输入 l 可以反应出站点的结构 l 可破解,用户可以通过移除URL的末尾,进而达到更高层次的信息体系结构 l 持久.不能变化 9.2路由机制的概述 ASP.NET MVC中路由机制的两种用途: l 匹配传入的请求,并映射到控制器的操作 l 构造传出的URL,用来相应控制器的操作 9.2.1 对比路由和URL重写 URL重写是将URL映射到另一个URL 路由是将URL映射到资源 两者的区别:路由机制也使用它在匹配传入URL

mvc url路由参数的加密和解密

查看某个信息的时候一般会在url上加上该信息在数据库中对应的主键id(而且一般是自增的) url是这样子的 xxxDetail/1 , 虽然对于我们开发人员来说可以这种显式的数据库主键会方便调试过程,但是这种url的安全性比较低 所以想将这类id给加密了, 当然也不想在需要此处理的地方 添加上加密或解密的代码; 基于mvc的路由机制我们可以很方便的将 输出的url和输入的url参数进行自动的加密和解密: 一.通过扩展UrlHelper方法, 对参数进行加密 1 public static cla

ASP.NET MVC3 学习心得------路由机制

9.1 理解URL URL满足的要求: l 域名易于记忆和拼写 l 简短.易输入 l 可以反应出站点的结构 l 可破解,用户可以通过移除URL的末尾,进而达到更高层次的信息体系结构 l 持久.不能变化 9.2路由机制的概述 ASP.NET MVC中路由机制的两种用途: l 匹配传入的请求,并映射到控制器的操作 l 构造传出的URL,用来相应控制器的操作 9.2.1 对比路由和URL重写 URL重写是将URL映射到另一个URL 路由是将URL映射到资源 两者的区别:路由机制也使用它在匹配传入URL

ASP.Net MVC开发基础学习笔记(3):Razor视图引擎、控制器与路由机制学习

首页 头条 文章 频道                         设计频道 Web前端 Python开发 Java技术 Android应用 iOS应用 资源 小组 相亲 频道 首页 头条 文章 小组 相亲 资源 设计 前端 Python Java 安卓 iOS 登录 注册 首页 最新文章 经典回顾 开发 Web前端 Python Android iOS Java C/C++ PHP .NET Ruby Go 设计 UI设计 网页设计 交互设计 用户体验 设计教程 设计职场 极客 IT技术

ASP.Net MVC开发基础学习笔记:三、Razor视图引擎、控制器与路由机制学习

一.天降神器“剃须刀” — Razor视图引擎 1.1 千呼万唤始出来的MVC3.0 在MVC3.0版本的时候,微软终于引入了第二种模板引擎:Razor.在这之前,我们一直在使用WebForm时代沿留下来的ASPX引擎或者第三方的NVelocity模板引擎. Razor在减少代码冗余.增强代码可读性和Visual Studio智能感知方面,都有着突出的优势.Razor一经推出就深受广大ASP.Net开发者的喜爱. 1.2 Razor的语法 (1)Razor文件类型:Razor支持两种文件类型,分

ASP.NET MVC 路由机制

传统的ASP.NET web form 是假想,用户请求的URL和服务器上面的文件之间有某种关联,这里,服务器的工作就是根据接收到的用户请求,检索到对应的文件给用户.这种方式在web form时代很适合,因为ASP.NET页面是aspx页面,并且能够独立的回复用户的浏览器请求. 但是这中方式在MVC中不合适,在MVC中用户请求是通过控制器里面的方法来处理的,在MVC中没有ASP.NET,一对一的文件关联关系;为了解决这个问题,我们要学会MVC路由机制. 路由机制有两个功能: 1.检查收到的URL

asp.net MVC 路由机制 Route

1:ASP.NET的路由机制主要有两种用途: -->1:匹配请求的Url,将这些请求映射到控制器 -->2:选择一个匹配的路由,构造出一个Url 2:ASP.NET路由机制与URL重写的区别 -->Url重写关注的是将一个Url映射到另一个Url. 路由机制关注的是将Url映射到资源上.资源不一定是一个物理页面,可以是类中的方法. -->Url重写只能用于传入的请求Url 路由机制可以匹配传入的Url,也能够生成一个Url -->Url重写大多是IIS级别的,是IIS的一个组