前言

这个东西好像,一般也不经常动,都用默认的即可。由于MVC模式在framework里面的解析机制,区别与webform模式,是采用解析路由机制的url。从来实例化视图列对象,然后对该action进行操作,所以路由显得也很重要,也可以理解为这个是一个默认的rul。

按照上文MVC模式,首先发送请求到代码部分,会先解析路由机制,然后找到相应视图控制器下面的相应的action方法,其实就是一个默认引导作用。下面说一下默认路由和自定义路由,以及方法参数分析,其实也没什么。

内容

路由机制我见过的有以下两种:

  • 第一种:用路由匹配请求的url,从而将这些请求映射到控制器中:

默认路由

我见过的路由是在global.asax文件中。默认路由为:

Demo

            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // 路由名称
"{controller}/{action}/{id}", // 带有参数的 URL
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 参数默认值
);

根据上面的demo,可以看出,这个路由存在于全局文件里面,以静态方法存在。接受的参数为一个路由集对象。方法里面应用了路由对象的两个方法,第一个方法“IgnoreRoute”表明:忽视给出的可用的路由的指定url路由。这里主要是为了适应asp.net,这是一些*axd格式的网址路径不通过MVC运行。去掉它,程序也可以正常运行,我在想它是不是起到了一种初始化或者过滤路由功能。第二个方法“MapRoute”就是映射路由了。系统给出了默认路由url,是不是很人性化。这个MapRoute方法里面有三个参数,分别是路由名称、带有参数的url、参数默认值。在这里就可以配置程序第一次启动要进入的那个url了。其实就这么点儿东西,理解运行机制,路由就是这样用。

关于自定义路由:

在默认路由上面按照默认路由方法,写出自定义跳转的controller、action即可。这里要注意一点儿就是,自定义路由要写到默认路由上面,否则,跳转的时候,还是会跳转到默认路由。当自定义路由出问题的时候,还是会跳转到默认路由的。

//自定义路由
routes.MapRoute("haha", "{controller}/{action}/{id}", new { controller = "Home", action = "Index2", id = UrlParameter.Optional });

  • 第二种:选择一个匹配的路由,构造另一个url:

另外,我们如果在操作过程中,需要用到路由转换机制,那么我们还是可以在cshtml里面利用html.routehtml来自定义路由,方法和自定义路由一样。

@Html.RouteLink("luyoumingcheng", new { controller = "Home", action = "Index2" });

上面这两种方法,路由后面的不管是id还是其他参数,我们还可以通过id(或者其他参数)来更快的找到我们想要的页面。

路由约束

在匹配url或者自定义路由的同时,我们还可以对我们自定义的url或者路由进行条件约束,从而得到我们需要的路由。

Demo

//匹配字母或者数字或者下划线重复多次
routes.MapRoute("haha", "{controller}/{action}/{id}", new { controller = "Home", action = "Modify", id = "1" }, new { controller=@"\w+",action=@"\w+",id=@"\d+"});

小结

总的来说,使用路由构造的url或者请求匹配的url会在一定程度上,让我们的页面转换更加方便。上网查了查说路由机制,可以在一定程度上,避免SQL注入攻击。路由其实真的研究起来,实用的地方真的特别多,微软官方文档上,关于路由对象的方法可谓有多种多样,还需要我们以后多多去应用理解。

感谢您的宝贵时间···

MVC进阶篇(二)—路由机制的更多相关文章

  1. Asp.Net MVC 进阶篇:路由匹配 实现博客路径 和文章路径

    Asp.Net MVC 进阶篇:路由匹配 实现博客路径 和文章路径 我们要实现 通过路由 匹配出 博客地址 和博客文章地址 例如下面的这两个地址 //http://www.cnblogs.com/ma ...

  2. C#进阶系列——WebApi 路由机制剖析:你准备好了吗?

    前言:从MVC到WebApi,路由机制一直是伴随着这些技术的一个重要组成部分. 它可以很简单:如果你仅仅只需要会用一些简单的路由,如/Home/Index,那么你只需要配置一个默认路由就能简单搞定: ...

  3. C#进阶系列——WebApi 路由机制剖析:你准备好了吗? 转载https://www.cnblogs.com/landeanfen/p/5501490.html

    阅读目录 一.MVC和WebApi路由机制比较 1.MVC里面的路由 2.WebApi里面的路由 二.WebApi路由基础 1.默认路由 2.自定义路由 3.路由原理 三.WebApi路由过程 1.根 ...

  4. WPF 4 DataGrid 控件(进阶篇二)

    原文:WPF 4 DataGrid 控件(进阶篇二)      上一篇<WPF 4 DataGrid 控件(进阶篇一)>中我们通过DataGridTemplateColumn 类自定义编辑 ...

  5. Asp.Net MVC4 系列-- 进阶篇之路由(1)

    创建一个路由 打开 RouteConfig.cs  ,发现已经创建了一个默认路由 : routes.MapRoute( name:"Default", url:"{con ...

  6. Asp.Net MVC4 系列-- 进阶篇之路由

    原文  http://blog.csdn.net/lan_liang/article/details/22993839 创建一个路由 打开 RouteConfig.cs  ,发现已经创建了一个默认路由 ...

  7. MVC进阶篇(一)——概览

    前言 说到MVC,就得先说说框架是什么东西,MVC好多人都知道,是Model.view.controller,但是MVC到底是什么样的一个框架呢,好多人又说了是约定大于配置.下面我来说说我的理解. 内 ...

  8. Java多线程编程——进阶篇二

    一.线程的交互 a.线程交互的基础知识 线程交互知识点需要从java.lang.Object的类的三个方法来学习:    void notify()           唤醒在此对象监视器上等待的单个 ...

  9. Asp.Net MVC4 系列--进阶篇之路由 (2)

    上一篇介绍了Asp.Net MVC 中,从Http Pipeline上接收到请求如何匹配,匹配限制,以及如何控制在指定命名空间查找,解析出controller和action,并传参. 这篇主要介绍如何 ...

随机推荐

  1. Lagom production deployment

    tutorial:https://developer.lightbend.com/guides/lagom-kubernetes-k8s-deploy-microservices/ 一.harbor ...

  2. windows 进程监控 Procmon.exe

    windows 进程监控 Procmon.exe window下一个程序打开太慢,可以用此程序监控.在哪一步慢了,读取文件还是注册表. ProcessMonitor3.2 Process Monito ...

  3. 201671010140. 2016-2017-2 《Java程序设计》java学习第三周

    java学习第三周       不知不觉,学习java已经是第三周了,不同于初见时的无措,慌张,在接触一段时日后,渐渐熟悉了一些,了解到了它的便利之处,也体会到了它的一些难点,本周主攻第四章,< ...

  4. java基础之JDBC七:C3P0连接池的使用

    使用C3P0的前提是需要引入jar包 具体使用如下: /** * c3p0的应用 * 前提:引入c3p0的jar包 */ public class Test { public static void ...

  5. tomcat报503 或者无法启动应用

    一般都是配置文件有问题,或者路径问题,或者jvm的参数路径问题.... 总之,报错实在是不清楚!这点比resin差远了!!

  6. 刷题向》POJ2823 单调队列裸题(<不会做,请自裁>系列)

    最近BZOJ炸了,而我的博客上又更新了一些基本知识,所以这里刷一些裸题,用以丰富知识性博客 POJ2823   滑动的窗口 这是一道经典的单调队题,我记得我刚学的时候就是用这道题作为单调队列的例题,算 ...

  7. ubuntu18.04 蓝牙打开无效,解决办法升级内核

    http://kernel.ubuntu.com/~kernel-ppa/mainline/ 上面的链接是linux内核版本, 蓝牙不管用可能是linux内核版本过低,本人亲自实验过, 升级到4.20 ...

  8. Redis02 Redis客户端之Java、连接远程Redis服务器失败

    1 查看支持Java的redis客户端 本博文采用 Jedis 作为redis客户端,采用 commons-pool2 作为连接redis服务器的连接池 2 下载相关依赖与实战 2.1 到 Repos ...

  9. 在Python中操作谷歌浏览器

    在Python中使用谷歌浏览器,注意以下几点: 1.下载安装的谷歌浏览器Chrome和驱动chromedriver.exe要版本一致. 2.驱动chromedriver.exe要放在Chrome浏览器 ...

  10. laravel的orm增删改查

    增: //通过模型新增 //使用模型的create方法新增数据 删: //通过模型删除 //通过主键删除 改: //通过模型更新数据库 //结合查询语句批量更新 查: