1、ASP.NET MVC框架中提供的URL路由机制能够使URL不必映射到应用程序的特定物理文件。

  2、当用户访问基于MVC模式创建的网站时,只需要在浏览器地址栏里输入类似于下面的URL:

  http://localhost/HelloWord/hello

  那么ASP.NET MVC框架就自动调用控制器HelloWord的行为hello,而行为hello将返回一个特定的视图,或者是将用户重定向到另一个控制器。

  之所以会产生这种现象,完全是由于ASP.NET MVC框架的路由机制在发挥作用。ASP.NET MVC框架利用路由是URLs与控制器和行为对应起来。路由解析包含在URL中的变量,并自动地把变量作为参数传递到控制器的行为。

  3、URL路由与非URL路由的区别

①作用不同:URL路由可以用于描述用户行为,而非URL路由只映射到物理文件,不包含任何意义。

②URL重写模式不同

4、URL路由机制

①当用户发来请求时,UrlRoutingModule会把这个请求注册在RouteTable中的路由中进行匹配;

②如果路由匹配请求,Routing模块将启动IRouteHandler接口;

③Routing模块调用IRouteHandler接口的GetHandler方法,这个方法将会返回MvcHandler;

④MvcHandler执行IHttpHandler接口,这个接口将负责实例化控制器,从而执行相应的方法以回应请求。

通过以上处理请求的过程,可以发现在URL路由中,需要事先定义URL路由模式,也就是在RouteTable中定义好路由匹配的模式,ASP.NET MVC框架将完成剩余的工作。

5、定义路由

创建一个ASP.NET MVC应用程序后,路由将默认定义在两个地方:第一个地方就是Web.config文件,另一个是Globe.asax文件。

当一个MVC应用程序首次运行时,会调用Application_Start()方法,此方法随后调用RegisterRoutes()方法创建路由表(RouteTable)。

路由的添加可以利用类RouteCollection的Add方法和MapRoute方法来完成,使用Add方法添加路由的代码如下:

public static void RegisterRoutes(RouteCollection routes)

{

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(  //使用MapRoute不用新建Route对象

name: "Default",

url: "{controller}/{action}/{id}",

defaults: new { controller = "HelloWorld", action = "Index", id = UrlParameter.Optional }

);

routes.Add(new Route  //使用Add方法添加路由需要新建Route对象

"Category/{action}/{categoryName}"//定义路由方式

,new CategoryRouteHandler()//默认路由

);

}

MVC 路由的更多相关文章

  1. ASP.NET MVC 路由(一)

    ASP.NET MVC路由(一) 前言 从这一章开始,我们即将进入MVC的世界,在学习MVC的过程中在网上搜索了一下,资料还是蛮多的,只不过对于我这样的初学者来看还是有点难度,自己就想看到有一篇引导性 ...

  2. ASP.NET MVC 路由(二)

     ASP.NET MVC路由(二) 前言 在上一篇中,提及了Route.RouteCollection对象的一些信息,以及它们的结构所对应的关系.按照处理流程走下来还有遗留的疑问没有解决这个篇幅就来讲 ...

  3. ASP.NET MVC 路由(三)

    ASP.NET MVC路由(三) 前言 通过前两篇的学习会对路由系统会有一个初步的了解,并且对路由系统中的Url规则有个简单的了解,在大家的脑海中也有个印象了,那么路由系统在ASP.NETMVC中所处 ...

  4. ASP.NET MVC 路由(四)

    ASP.NET MVC路由(四) 前言 在前面的篇幅中我们讲解路由系统在MVC中的运行过程以及粗略的原理,想必看过前面篇幅的朋友应该对路由有个概念性的了解了,本篇来讲解区域,在读完本篇后不会肯定的让你 ...

  5. ASP.NET MVC 路由(五)

    ASP.NET MVC 路由(五) 前言 前面的篇幅讲解了MVC中的路由系统,只是大概的一个实现流程,让大家更清晰路由系统在MVC中所做的以及所在的位置,通过模糊的概念描述.思维导图没法让您看到路由的 ...

  6. MVC路由探寻,涉及路由的惯例、自定义片段变量、约束、生成链接和URL等

    引子 在了解MVC路由之前,必须了解的概念是"片段".片段是指除主机名和查询字符串以外的.以"/"分隔的各个部分.比如,在http://site.com/Hom ...

  7. Asp.Net MVC 路由 - Asp.Net 编程 - 张子阳

    http://cache.baiducontent.com/c?m=9d78d513d98316fa03acd2294d01d6165909c7256b96c4523f8a9c12d522195646 ...

  8. ASP.NET MVC 路由进阶(之二)--自定义路由约束

    3.自定义路由约束 什么叫自定义路由约束呢?假如路由格式为archive/{year}/{month}/{day},其中year,month,day是有约束条件的,必须是数字,而且有一定范围. 这时候 ...

  9. 自定义MVC路由配置

    首先我用MVC4新增一个订单查看的功能 1.创建控制器OrderController namespace MvcApplication3.Controllers { public class Orde ...

  10. AngularJS html5Mode与ASP.NET MVC路由

    AngularJS html5Mode与ASP.NET MVC路由共存 前言 很久之前便听说AngularJS,非常酷,最近也比较火,我也在持续关注这个技术,只是没有认真投入学习.前不久公司找我们部门 ...

随机推荐

  1. sql 2012 提示列名无效 但可以执行问题

    笔者目前使用Ctrl+Shift+R可以解决这个问题,因为智能感知的问题,需要重新整理一下intellisense.有其他方法,请园友共享一下,谢谢. VS2012及13都有用到智能感知,而在sql里 ...

  2. Ext.Net-Grid 篇

    概述 前两篇分别介绍了Ext.NET-基础 和 Ext.NET-布局,从本篇开始我们尽量做一些实际工作中用到的例子. 在Ext.NET官方示例中,关于GridPanel的例子是最多的(近百个),篇幅所 ...

  3. 基于FPGA的通信系统实验

    伪随机信号发生器 1.伪随机信号发生器原理 伪随机信号发生器又叫PN序列发生器或者是m序列发生器.m序列是一种线性反馈寄存器序列,m序列的产生可以利用r级寄存器产生长度为2^r-1的m序列,该实验中采 ...

  4. [BZOJ1061][Noi 2008]志愿者招募(网络流)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1061 分析: 神题不解释,只能欣赏:https://www.byvoid.com/bl ...

  5. [POJ3696]The Luckiest number(数论)

    题目:http://poj.org/problem?id=3696 题意:给你一个数字L,你要求出一个数N,使得N是L的倍数,且N的每位数都必须是8,输出N的位数(如果不存在输出0) 分析: 首先我们 ...

  6. AJAX——核心XMLHttpRequest对象

    AJAX大家已经都知道了,是为了实现异步通讯,提高用户体验度,而将很多旧知识(XML,DOM,JavaScript,HTML,Jquery,Css……)重新融合的一个新的知识框架.而,XMLHttpR ...

  7. php - 上传图片之痛(建文件夹)

    $json_result ['status'] = 0; $path = '../upfile'; $json_result ['status'] = 0; $json_result ['succes ...

  8. Day Five (beta)

    站立式会议 站立式会议内容总结 331 今天:爬虫抓取豆瓣数据; 明天:数据展示在话题详情页,话题页修改 442 今天:了解聊天模块 遇到的问题:无 明天:编写聊天模块 439 今天:学习 遇到困难 ...

  9. Beta冲刺---Day2

    站立式会议 站立式会议内容总结: 221: 昨日完成: 1.这几天的安排,接口测试. 今天要完成: 1.协作编写系负责人审核 遇到问题: 1.无 328: 昨天完成的事情: 1.无 今天要完成的事情: ...

  10. jenkins 把包传到远程服务器上

    首先我们在 一台服务器上部署svn,maven,jdk,tomcat,nexus,还有Jenkins. 这里我主要记录Jenkins. 首先我们从网上下载Jenkins的包 wget http://m ...