MVC进阶篇(二)—路由机制
前言
这个东西好像,一般也不经常动,都用默认的即可。由于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进阶篇(二)—路由机制的更多相关文章
- Asp.Net MVC 进阶篇:路由匹配 实现博客路径 和文章路径
Asp.Net MVC 进阶篇:路由匹配 实现博客路径 和文章路径 我们要实现 通过路由 匹配出 博客地址 和博客文章地址 例如下面的这两个地址 //http://www.cnblogs.com/ma ...
- C#进阶系列——WebApi 路由机制剖析:你准备好了吗?
前言:从MVC到WebApi,路由机制一直是伴随着这些技术的一个重要组成部分. 它可以很简单:如果你仅仅只需要会用一些简单的路由,如/Home/Index,那么你只需要配置一个默认路由就能简单搞定: ...
- C#进阶系列——WebApi 路由机制剖析:你准备好了吗? 转载https://www.cnblogs.com/landeanfen/p/5501490.html
阅读目录 一.MVC和WebApi路由机制比较 1.MVC里面的路由 2.WebApi里面的路由 二.WebApi路由基础 1.默认路由 2.自定义路由 3.路由原理 三.WebApi路由过程 1.根 ...
- WPF 4 DataGrid 控件(进阶篇二)
原文:WPF 4 DataGrid 控件(进阶篇二) 上一篇<WPF 4 DataGrid 控件(进阶篇一)>中我们通过DataGridTemplateColumn 类自定义编辑 ...
- Asp.Net MVC4 系列-- 进阶篇之路由(1)
创建一个路由 打开 RouteConfig.cs ,发现已经创建了一个默认路由 : routes.MapRoute( name:"Default", url:"{con ...
- Asp.Net MVC4 系列-- 进阶篇之路由
原文 http://blog.csdn.net/lan_liang/article/details/22993839 创建一个路由 打开 RouteConfig.cs ,发现已经创建了一个默认路由 ...
- MVC进阶篇(一)——概览
前言 说到MVC,就得先说说框架是什么东西,MVC好多人都知道,是Model.view.controller,但是MVC到底是什么样的一个框架呢,好多人又说了是约定大于配置.下面我来说说我的理解. 内 ...
- Java多线程编程——进阶篇二
一.线程的交互 a.线程交互的基础知识 线程交互知识点需要从java.lang.Object的类的三个方法来学习: void notify() 唤醒在此对象监视器上等待的单个 ...
- Asp.Net MVC4 系列--进阶篇之路由 (2)
上一篇介绍了Asp.Net MVC 中,从Http Pipeline上接收到请求如何匹配,匹配限制,以及如何控制在指定命名空间查找,解析出controller和action,并传参. 这篇主要介绍如何 ...
随机推荐
- 【phonegap】用本地浏览器打开网页
<a id="ssl2" href="#" onclick="openLocalExplorer()">请点击跳到页面</ ...
- Arp内网毒化
攻击者:192.168.220.143 受害者:192.168.220.137 默认网关:192.168.220.2 首先,开启IP转发 使用工具Arpspoof进行ARP毒化,把受害者的流量传送给网 ...
- vue-cli中的babel配置文件.babelrc详解
本文介绍vue-cli脚手架工具根目录的babelrc配置文件 介绍 es6特性浏览器还没有全部支持,但是使用es6是大势所趋,所以babel应运而生,用来将es6代码转换成浏览器能够识别的代码 ba ...
- 第十八章 MySQL Workbench5.2使用(待续)
··········
- 第十一章 SpringMvc(待续)
············
- 软件部需求,内容采集,显示内容图文列表,MongoDB数据导入导出JSON
全局变量 由于多个html页面,需要引用同一个变量.这个时候,需要定义一个全局变量!如何定义呢? 默认包含了mui的html文件都导入mui.js文件.那么将变量写在mui.js中,就可以实现所有页面 ...
- Java之泛型
1. 概述 在引入泛型之前,Java类型分为原始类型.复杂类型,其中复杂类型分为数组和类.引入泛型后,一个复杂类型就可以在细分成更多的类型. 例如原先的类型List ...
- 21-从零玩转JavaWeb-多态详解
配套视频详解 多态思想 eclipse快捷键设置 多态的好处 多态方法调用 instanceof关键字 多态中字段注意点 一.什么是多态 既然子类是一种特殊的父类 那么我们可不可以认为 狗 ...
- ajax load事件
ajax.load 使用ajax 来改变div元素文本. load( url [, data][, callback] ) load()方法的传递方式根据参数data来自动指定.如果没有参数传递,则 ...
- 728. Self Dividing Numbers可以自己除以自己的数字
[抄题]: A self-dividing number is a number that is divisible by every digit it contains. For example, ...