7.ASP.NET MVC 5.0中的Routing【路由】
大家好,这一篇向大家介绍ASP.NET MVC路由机制。【PS:上一篇-->6. ASP.NET MVC 5.0中的HTML Helpers【HTML帮助类】 】
路由是一个模式匹配系统,它确保你能够将浏览器的请求,传递到控制器特定的Action方法上。路由引擎使用路由表,来将浏览器发送来的请求URL和路由表中定义的URL进行匹配。RouteConfig文件用来添加路由规则,路由是调用控制器和Action的方式。
我们在Global.asax文件中注册路由:通过在Application_Start方法中调用RegisterRoutes方法来注册路由。路由用于创建用户友好的URLs.路由可以设置程序启动页面,就像ASP.NET Web Forms 这样。路由系统能够使我们能够创建任何您想要的url,并以清晰和简洁的方式表达它们。
下面是路由引擎来执行路由,路由系统根据,用户请求的URL,来匹配路由表。如果找到了,就继续处理,没找到就抛异常。当ASP.NET 路由引擎在运行的时候收到了这个请求,然后就会为请求的URL,在路由表中找到匹配的规则,如果找到了 ,请求就会接着转到相应的控制器中,否则就会报HTTP 404错误。
下面的图片中,chapters是控制器,speakers是方法,Actions是可选的,这个URL匹配的是Home/Action这个路由规则,其中Action是Home控制器中的方法,还有路由你可以进一步配置一个可选参数ID,用来指向特定的数据。这就是为什么路由引擎知道哪些参数是可选的了。
现在理论知识了解差不多了,我们来看看怎么给MVC应用程序添加路由,以完成从控制器到Action的映射。我们来创建一个项目,动手实践一下:
创建一个空模板的MVC应用程序。
每一个MVC应用程序都默认创建了路由配置文件RouteConfig,里面有默认的实现。我们来看看:
可以看到RouteConfig类有一个静态的RegisterRoutes方法,这个方法在我们程序启动的时候,从Global.asax文件中进行注册。除此之外,任何带有.axd的请求,就会被IgnoreRoute进行捕捉,而交给程序的其他处理机制进行处理。我们可以这样说,IgnoreRoute用来阻止特殊的路由表,例如Web.Config,图片文件等等。
MapRoute方法是一个扩展方法,意味着方法已经在路由集合中定义了。代码里面定义了默认的路由规则,默认的路由名称是”Default“,指向的是Home控制器,Index方法,还有一个可选的id参数。
路由表在Golbal.asax文件中进行注册,当程序启动的时候,Application_Start方法被调用,然后就进行路由注册。
基本的默认路由配置介绍完了,我们怎么创建自己的路由规则呢?
首先,我们创建一个Author控制器,然后修改一下里面的代码:
然后创建AuthorDetail视图,写入下面的代码:
现在打开RouteConfig文件,创建一个新的路由--【Author】
运行项目:
然后再浏览器的URL中输入9:
现在以QueryString方式,在浏览器中输入:
还可以在方法上标注调用的是哪个路由:
看这里我们,就创建了一个路由了Author。大家学会了么?
7.ASP.NET MVC 5.0中的Routing【路由】的更多相关文章
- ASP.NET MVC 4.0中选择Windows 验证默认出错拒绝访问的原因和解决方案
在VS 2012或者2013 中,根据模板创建一个ASP.NET MVC 4.0的应用程序,选择下面的模板 然后选择Intranet Application 不对源代码做任何修改,直接按下F5调试,会 ...
- 8. Filters in ASP.NET MVC 5.0【ASP.NET MVC 5.0中的过滤器】
ASP.NET Filers用来在MVC框架的不同请求处理阶段,注入额外的逻辑.过滤器为横切关注点提供了一种方法(日志记录,授权,缓存). 在这篇文章中,我将会向你介绍MVC框架支持的各种不同种类过滤 ...
- 6. ASP.NET MVC 5.0 中的HTML Helper【HTML 帮助类】
这篇文章,我将带领大家学习HTML Helper.[PS:上一篇-->5.ASP.NET MVC 中的Area[区域]是什么] HTML Helpers是用来创建HTML标签进而创建HTML控件 ...
- ASP.NET MVC 4.0 中使用NPOI 2.2.0 按模板生成Excel报表
使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写.NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office的情况下对Word/ ...
- 返璞归真 asp.net mvc (8) - asp.net mvc 3.0 新特性之 Model
原文:返璞归真 asp.net mvc (8) - asp.net mvc 3.0 新特性之 Model [索引页][源码下载] 返璞归真 asp.net mvc (8) - asp.net mvc ...
- asp.net MVC 4.0 View回顾——布局页与分部页
asp.net MVC 4.0中总结 视图里加载部分视图几种方法 @RenderPage() 但它不能使用 原来视图的 Model 和 ViewData ,只能通过参数来传递. @RenderPage ...
- ASP.NET Core 3.0中使用动态控制器路由
原文:Dynamic controller routing in ASP.NET Core 3.0 作者:Filip W 译文:https://www.cnblogs.com/lwqlun/p/114 ...
- 避免在ASP.NET Core 3.0中为启动类注入服务
本篇是如何升级到ASP.NET Core 3.0系列文章的第二篇. Part 1 - 将.NET Standard 2.0类库转换为.NET Core 3.0类库 Part 2 - IHostingE ...
- 返璞归真 asp.net mvc (11) - asp.net mvc 4.0 新特性之自宿主 Web API, 在 WebForm 中提供 Web API, 通过 Web API 上传文件, .net 4.5 带来的更方便的异步操作
原文:返璞归真 asp.net mvc (11) - asp.net mvc 4.0 新特性之自宿主 Web API, 在 WebForm 中提供 Web API, 通过 Web API 上传文件, ...
随机推荐
- PHP判断是手机端还是PC访问
function isMobile(){ $useragent=isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ' ...
- centos7安装mysql客户端
1.判断是否已安装 [root@k8s-master master]# which mysql /usr/bin/which: no mysql in (/usr/local/sbin:/usr/lo ...
- 关于游览器 cookie的操作类
var Cookie = { getCookie : function(c_name,is){ var value = this._getCookie(c_name); if(JSON &&a ...
- sourcetree合并分支
参考: https://blog.csdn.net/qq_34975710/article/details/74469068
- HTML5-网页添加视频-菜鸟笔记
一.标签 <video> 在html5中,有这么个标签 <video> 标签. <video> 允许你简单的嵌入一段视频. 二.浏览器的兼容性问题 WebM 容器通 ...
- spring的ioc与aop原理
ioc(反向控制) 原理: 在编码阶段,既没有实例化对象,也没有设置依赖关系,而把它交给Spring,由Spring在运行阶段实例化.组装对象.这种做法颠覆了传统的写代码实例化.组装对象.然后一 ...
- MySQL 8.0 新增SQL语法对窗口函数和CTE的支持
尝试了一下MySQL 8.0的部分新特性. 如果用过MSSQL或者是Oracle中的窗口函数(Oracle中叫分析函数), 然后再使用MySQL 8.0之前的时候,就知道需要在使用窗口函数处理逻辑的痛 ...
- AR涂涂乐
<1> 涂涂乐着色 https://blog.csdn.net/begonia__z/article/details/51282932 http://www.manew.com/blog- ...
- vivo手机,自带世界之窗浏览器,sessionStorage设置的值为null
最近遇到一个小问题 用vivo手机自带浏览器,每次跳转到一个新页面都是重新打开一个webpage,导致sessionStorage设置的值都没了. 所以开发移动端网页时,谨慎使用sessionStor ...
- Django_models下划线__正反查询,对象正反查询
1.我们使用models对数据库进行查询的时候,想去拿到结果的时候有时直接使用".字段",有时是'[0].字段',区别就是我们使用的语句返回的到底是一个对象还是列表: obj=mo ...