asp.net MVC 路由系统
ASP.NET的路由系统是基于物理文件的路由注册,通过调用System.Routing.RouteTable的Routes(RouteCollection)属性的MapPageRoute()方法来完成。
ASP.NET MVC路由系统需要针对Controller和Action来注册路由,那么MVC对RouteCollection进行了一系列的扩展,实现文件路径的无关性。这些扩展定义在System.Web.Mvc.RouteCollectionExtensions类型中。
RouteCollectionExtensions定义了两组方法,
Ignore()对应RouteCollection的IgnoteRoute()方法,不需要进行路由的模版
MapRoute()对应RouteCollection的MapPageRoute()方法,基于Url模版进行路由注册
1:MapRoute()方法中,表示默认变量的参数defaults和基于正则表达式的变量约束constraints不再是RouteValueDirection对象,而是一个普通的object。我们可以用匿名对象的方式来指定这两个参数值。该方法会在内部通过发射的形式,转换成RouteValueDirection对象。
2:MVC中,路由系统对请求的地址进行解析生成的路由数据必须包含目标Controller。由于目标Controller只包括类型的名称,但是激活Controller实例前,需要解析出具体的类型,所以需要用到名称空间。在调用MapRoute()可以通过字符串数组类型的参数namespace来指定名称空间的列表。添加的名称空间列表最后都被存储于Route对象的DataTokens属性中。
3:如果某个Controller中的Action的请求与路由表匹配,具体匹配的路由对象的GetRouteData()被调用,返回一个具体的RouteData对象。对请求地址进行解析所得到的目标Controller和Action就包含在RouteData的Values属性中。
4:默认参数defaults的缺省Url参数UrlParameter.Optional,只有请求的Url中包含具体的值的时候,RouteData.Values属性中才包含相应的数据项。
asp.net MVC 路由系统的更多相关文章
- ASP.NET MVC 路由系统类
RouteData public class RouteData { private RouteValueDictionary _dataTokens; private IRouteHandler _ ...
- asp.net Mvc 路由详解,非常详细.
关于路由的理解 为什么要定义路由?路由的定义在开发中的工作量非常小,但是非常重要,因为任何请求都离不开路由. 各个电商网站的 URL 使用非常灵活,都离不开路由的定义,请大家参考几家电商的 URL 如 ...
- ASP.NET MVC , ASP.NET Web API 的路由系统与 ASP.NET 的路由系统是怎么衔接的?
ASP.NET MVC 的路由实际上是建立在 ASP.NET 的路由系统之上的. MVC 路由注册通常是这样的: RouteTable 是一个全局路由表, 它的 Routes 静态属性是一个 Ro ...
- 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中所做的以及所在的位置,通过模糊的概念描述.思维导图没法让您看到路由的 ...
- [Buffalo]ASP.NET MVC路由映射
Asp.Net的路由系统旨在通过注册URl模版与物理文件之间的映射进而实现请求地址与文件路径之间的分离,但对于Asp.Net Mvc应用来说,请求的目标却是定义在某个Controller类型中的Act ...
随机推荐
- 如何将sqlserver表中的数据导出sql语句或生成insert into语句 [转]
输入表名,生成插入语句 drop proc proc_insert //如果存在就删除 go create proc proc_insert (@tablename varchar(256)) as ...
- iOS--Swift开发中的单例设计模式
最近在开发一个小的应用,遇到了一些Objective-c上面常用的单例模式,但是swift上面还是有一定区别的,反复倒来倒去发现不能按常理(正常的oc to swift的方式)出牌,因此搜索了一些帖子 ...
- Callback
由于 JavaScript 语句(指令)是逐一执行的 - 按照次序,动画之后的语句可能会产生错误或页面冲突,因为动画还没有完成. 为了避免这个情况,您可以以参数的形式添加 Callback 函数. j ...
- linux下getrusage()
#include <sys/resource.h> /* Return resource usage information on process indicated by WHOand ...
- NHibernate 数据查询之QueryOver<T>
NHibernate 数据查询之QueryOver<T> 一.限制运算符 Where:筛选序列中的项目WhereNot:反筛选序列中的项目 二.投影运算符 Select:创建部分序列的 ...
- INSTEAD OF触发器
Oracle触发器5(INSTEAD OF触发器) 前提:对于简单的视图,可以直接进行DML操作,但是对于复杂视图,不允许直接执行DML操作,当视图符合以下任何一种情况都不可以: 具有集合操作符(UN ...
- NPOI封装
一.对于Excel的操作封装主要针对对于Excel的写入的封装,对于打印基类的封装主要引入了两个概念 1.打印区域模板类 2.打印集合类 如实例模板中需要打印的区域模块 如实例模板中需要打印的集合类 ...
- java加载配置文件的三种方式
比如我们要加载db.properties文件 如图: 比如我们要加载source目录下的db.properties文件.就有以下几种方式 第一种是文件io流: public static void l ...
- Code reviews and bad habits
图文大话编程语言史 投递人 itwriter 发布于 2014-03-07 17:16 评论(2) 有298人阅读 原文链接 [收藏] « » 英文原文:Code reviews and bad ...
- IOS UI 第五篇:基本UI
添加个导航栏: Xib1 *xib1 = [[Xib1 alloc] initWithNibName:@"Xib1" bundle:nil]; UINavig ...