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 上传文件, ...
随机推荐
- Spring MVC 之 请求url 带后缀的情况
RequestMappingInfoHandlerMapping 在处理http请求的时候, 如果 请求url 有后缀,如果找不到精确匹配的那个@RequestMapping方法.那么,就把后缀去掉, ...
- Python 程序下载经办人照片
进行图片下载,需要提前准备好下载图片的存放文件夹: python在与文件.目录打交道时,少不了os模块.os模块包含普遍的操作系统功能. os.path.exists(filepath)——检验指定的 ...
- Rabbitmq(7) confirm模式
1. //将通道设置为comfirm模式channel.confirmSelect(); // 消息确认if(!channel.waitForConfirms()){ System.out.print ...
- python中TCP粘包问题解决方案
TCP协议中的粘包问题 1.粘包现象 基于TCP写一个远程cmd功能 #服务端 import socket import subprocess sever = socket.socket() seve ...
- 思维导图-mysql log
- AngularJS学习笔记(二)
一.AngularJS Select(选择框) 1.使用 ng-options 创建选择框 <div ng-app="myApp" ng-controller="m ...
- react项目的react-router-dom路由的使用
现在测试一下react-router-dom路由的使用,首先在App.js这个文件搭配路由 import React, { Component } from 'react'; import {Link ...
- [leetcode]10. Regular Expression Matching正则表达式的匹配
Given an input string (s) and a pattern (p), implement regular expression matching with support for ...
- Linux下Mysql安装(RPM安装)
1. 首先检查机器里是否已经存在MySQL $ rpm -qa | grep mysql 2. 去官网下载相应的rpm包:https://dev.mysql.com/downloads/mysql/ ...
- 22. pt-sift
pt-sift /var/lib/pt-stalk/ ======== server01 at 2018_11_23_15_56_46 DEFAULT (1 of 1) ========--disks ...