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,并传参. 这篇主要介绍如何 ...
随机推荐
- C# winform程序免安装.net framework在XP/win7/win10环境运行!(转)
C# winform程序免安装.net framework在XP/win7/win10环境运行! 前文: 首先感谢群里的大神宇内流云 提供的anyexec for windows版本. 经过本人搭 ...
- 内网渗透神器xerosploit
项目地址:https://github.com/LionSec/xerosploit 安装完成后直接在终端输入xerosploit打开 显示了本机的内网ip,mac地址,网关,网卡,输入help查看帮 ...
- java - 只输出中文,(不包含标点)
String a ="12dss显示,‘:()中文只"; StringBuffer b = new StringBuffer(); for(int i = 0;i<a.len ...
- python与桶排序
问题提出: 将以下数据: 6, 8, 2, 3, 4, 0, 9, 1, 5,1 按从小到达排列. 桶排序原理: 桶排序也叫计数排序,简单来说,就是将数据集里面所有元素按顺序列举出来,然后统计元素出现 ...
- div+css 左右两列自适应高度 ,以及父级div也跟着自适应子级的高度(兼容各大浏览器)
<style type="text/css" media="screen"> <!-- #main {width:500px;_height: ...
- Stars(树状数组单点更新)
Astronomers often examine star maps where stars are represented by points on a plane and each star h ...
- Hive split 分割函数
hive字符串分割函数 split(str, regex) - Splits str around occurances that match regexTime taken: 0.769 secon ...
- 【原】Coursera—Andrew Ng机器学习—Week 3 习题—Logistic Regression 逻辑回归
课上习题 [1]线性回归 Answer: D A 特征缩放不起作用,B for all 不对,C zero error不对 [2]概率 Answer:A [3]预测图形 Answer:A 5 - x1 ...
- Druid配置属性列表及含义
前两天,在排查springBoot使用双数据源出现的运行一段时候出现了数据库连接断开的问题的时候,查了很多关于Druid数据库连接池配置的文章,虽然最后问题的原因不是属性配置的问题,也可以说是 属性配 ...
- 2014蓝桥杯B组初赛试题《李白打酒》
题目描述: 话说大诗人李白,一生好饮.幸好他从不开车. 一天,他提着酒壶,从家里出来,酒壶中有酒2斗.他边走边唱: 无事街上走,提壶去打酒. 逢店加一倍,遇花喝一斗. 这一路上 ...