MVC 路由
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 路由的更多相关文章
- ASP.NET MVC 路由(一)
ASP.NET MVC路由(一) 前言 从这一章开始,我们即将进入MVC的世界,在学习MVC的过程中在网上搜索了一下,资料还是蛮多的,只不过对于我这样的初学者来看还是有点难度,自己就想看到有一篇引导性 ...
- ASP.NET MVC 路由(二)
ASP.NET MVC路由(二) 前言 在上一篇中,提及了Route.RouteCollection对象的一些信息,以及它们的结构所对应的关系.按照处理流程走下来还有遗留的疑问没有解决这个篇幅就来讲 ...
- ASP.NET MVC 路由(三)
ASP.NET MVC路由(三) 前言 通过前两篇的学习会对路由系统会有一个初步的了解,并且对路由系统中的Url规则有个简单的了解,在大家的脑海中也有个印象了,那么路由系统在ASP.NETMVC中所处 ...
- ASP.NET MVC 路由(四)
ASP.NET MVC路由(四) 前言 在前面的篇幅中我们讲解路由系统在MVC中的运行过程以及粗略的原理,想必看过前面篇幅的朋友应该对路由有个概念性的了解了,本篇来讲解区域,在读完本篇后不会肯定的让你 ...
- ASP.NET MVC 路由(五)
ASP.NET MVC 路由(五) 前言 前面的篇幅讲解了MVC中的路由系统,只是大概的一个实现流程,让大家更清晰路由系统在MVC中所做的以及所在的位置,通过模糊的概念描述.思维导图没法让您看到路由的 ...
- MVC路由探寻,涉及路由的惯例、自定义片段变量、约束、生成链接和URL等
引子 在了解MVC路由之前,必须了解的概念是"片段".片段是指除主机名和查询字符串以外的.以"/"分隔的各个部分.比如,在http://site.com/Hom ...
- Asp.Net MVC 路由 - Asp.Net 编程 - 张子阳
http://cache.baiducontent.com/c?m=9d78d513d98316fa03acd2294d01d6165909c7256b96c4523f8a9c12d522195646 ...
- ASP.NET MVC 路由进阶(之二)--自定义路由约束
3.自定义路由约束 什么叫自定义路由约束呢?假如路由格式为archive/{year}/{month}/{day},其中year,month,day是有约束条件的,必须是数字,而且有一定范围. 这时候 ...
- 自定义MVC路由配置
首先我用MVC4新增一个订单查看的功能 1.创建控制器OrderController namespace MvcApplication3.Controllers { public class Orde ...
- AngularJS html5Mode与ASP.NET MVC路由
AngularJS html5Mode与ASP.NET MVC路由共存 前言 很久之前便听说AngularJS,非常酷,最近也比较火,我也在持续关注这个技术,只是没有认真投入学习.前不久公司找我们部门 ...
随机推荐
- HDU2819-Swap-二分图匹配
把矩阵上的1建成边,把边建成点 然后跑一个二分图匹配,就找到了主对角线的元素,之后排个序就可以了 /*------------------------------------------------- ...
- 学习笔记——Maven 如何处理传递性依赖
maven引入的传递性依赖机制,一方面大大简化和方便了依赖声明,另一方面,大部分情况下我们只需要关心项目的直接依赖是什么,而不用考虑这些直接依赖会引入什么传递性依赖.但有时候,当传递性依赖造成问题的时 ...
- 一道经典JS题(关于this)
项目中碰到的问题,以前也碰到过,没有重视,现记录如下. <input type='button' value='click me' id='btn' /> <script> v ...
- 如何在 apache 中设置缓存有效时间
今天学习了下如何在 apache 中设置缓存时间,记之以备忘. 在 http 报文头中,与缓存时间有关的两个字段是 Expires 以及 Cache-Control 中的 max-age,Expire ...
- 打字机游戏Ⅱ之手速pk
前言 demo预览->typewriter gameⅡ (chrome only 没做兼容) 别看一开始时速度不快,会线性增长的哦,反正楼主的score还没达到过40... 为什么叫Ⅱ呢?之前写 ...
- rsync实现负载均衡集群文件同步,搭建线上测试部署环境
闲来无事,搭建一个负载均衡集群,至于负载均衡集群搭建过程,找时间写下.这次主要写集群之间的文件同步,以及线上测试环境的搭建. 笔者看过很多公司都没有线上测试环境,真是崩溃了,不造怎么确保线上线下环境一 ...
- hihocoder1241 Best Route in a Grid
题目链接:hihocoder 1241 题意: n*n的格阵,每个方格内有一个数字.蚂蚁从左上角走到右下角,数字是零的方格不能走,只能向右向下走.蚂蚁走的路径上全部方格的的乘积为s,要使s低位0的个数 ...
- 阿里巴巴高新能数据源com.alibaba.druid.pool.DruidDataSource的jar包配置
aspectjweaver-1.7.4.jar druid-0.2.9.jar 两个包,用于提供com.alibaba.druid.pool.DruidDataSource
- 解决"415 Cannot process the message because the content type 'application/x-www-form-urlencoded' was not the expected type 'text/xml; charset=utf-8'"
wcf basicHttpBinding content-type text/xml;charset=utf-8 wsHttpBinding 'application/soap+xml; ch ...
- asp.net mvc输出自定义404等错误页面,非302跳转。
朋友问到一个问题,如何输出自定义错误页面,不使用302跳转.当前页面地址不能改变. 还要执行一些代码等,生成一些错误信息,方便用户提交反馈. 500错误,mvc框架已经有现成解决方法: filters ...