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,非常酷,最近也比较火,我也在持续关注这个技术,只是没有认真投入学习.前不久公司找我们部门 ...
随机推荐
- Block Chain, a protocol view
我做了个区块链的文档,给自己扫盲用的,有兴趣的可以看下,主要是自己画示意图比较好理解,示意图之后的专题部分,内容直接取自参考链接.网上的资料都是谈区块链有什么性质.有什么能力.有什么应用之类的,我主要 ...
- Beta版本项目展示要求
项目评审的定在1月5日上午9:00在新主楼D225进行. 在Beta阶段项目评审会上, 每个团队有12分钟展示时间,10分钟问答和机动时间,我们的展示也不需要PPT,大家把要展现的东西写成博客(可以有 ...
- 分析cocos2d-x中的CrystalCraze示例游戏
cocos2d-x自带了不少示例,以及几个比较简单的游戏,不过这些游戏都是用javascript binding(SpiderMonkey)做的,所以我猜测javascript binding可能是c ...
- .Net Core 自定义序列化格式
序列化对大家来说应该都不陌生,特别是现在大量使用WEBAPI,JSON满天飞,序列化操作应该经常出现在我们的代码上. 而我们最常用的序列化工具应该就是Newtonsoft.Json,当然你用其它工具类 ...
- HBase初探
string hbaseCluster = "https://charju.azurehdinsight.net"; string hadoopUsername = "账 ...
- iOS -- 神战
http://github.ibireme.com/github/list/ios/# https://github.com/Tim9Liu9/TimLiu-iOS http://www.ios122 ...
- 59-chown 简明笔记
改变文件的所有者或与文件相关联的组 chown [options] owner file-list chown [options] owner: group file-list chown [opti ...
- 作业成绩 final-review 20161201-1203 15:05
final-review阶段,20161201-20161203 15:05 final 评论II截止 20161204 09:00 申诉截止时间 20161207 12:00,微信联系杨贵福. 凡描 ...
- exce生成随机数
有时候数据库没有数据,造数据专用. 来源于:http://jingyan.baidu.com/article/93f9803feba1f5e0e46f55f2.html 首先介绍一下如何用RAND() ...
- oracle-day1
今天的学习内容是oracle产品的三种安装方式,还有使用dbca静默建库 oracle产品的三种安装方式分别为: 1.图形化(Java向导)安装引导 2.使用应答文件静默安装 3.直接将装好的orac ...