MVC 路由模块分析(一)
概述
主要分为四个部分进行分析。
First ——Usage;
then ——Extension;
and then ——Design;
last ——Test。
1. Usage
1.1 Display RouteData的值
MVC针对每一个请求,都会将请求转化为一个RouteData对象,添加到全局路由表中。
RouteData是一个包装类,可以打印其Values和DataTokens。
Eg1:
<tr>
<td>Values:</td>
<td>
<ul>
<% foreach (var tmp in RouteData.Values)
{
%>
<li>
<%= tmp.Key %> = <%= tmp.Value %>
</li>
<%
} %>
</ul>
</td>
</tr>
<tr>
<td>DataTokens:</td>
<td>
<ul>
<% foreach (var tmp in RouteData.DataTokens)
{
%>
<li>
<%= tmp.Key %> = <%= tmp.Value %>
</li>
<%
} %>
</ul>
</td>
</tr>
Eg2:
public ActionResult RouteDemo()
{
foreach (var route in RouteTable.Routes)
{
var data = route.GetRouteData(HttpContext);
Console.WriteLine(route.GetType().FullName);
}
return View();
}
1.2路由到物理文件
使用MapPageRoute方法完成此项功能。
步骤:
l 定义URL模板; l 创建defaults字典; l 创建dataTokens字典; l 创建constraint字典; l 调用MapPageRoute方法 |
var defaults = new RouteValueDictionary();
defaults.Add("areacode", "");
defaults.Add("days", ""); var constraints = new RouteValueDictionary();
constraints.Add("areacode", @"0\d{2,3}");
constraints.Add("days", @"[1-3]{1}"); var dataTokens = new RouteValueDictionary();
dataTokens.Add("defaultCity", "深圳");
dataTokens.Add("defaultDays", ""); RouteTable.Routes.MapPageRoute("default", "{areacode}/{days}", "~/Views/Home/RouteDemo.aspx", false, defaults, constraints, dataTokens);
1.3路由忽略
调用Ignore方法
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{filename}.css/{*pathInfo}"); //忽略*.css文件的路由
1.4直接注册路由
MapRoute方法实质上就是将路由对象(RouteBase的子类,如Route)添加到路由表中,故而可以直接添加。
Route route2 = new Route("{areacode}/{days}", defaults, constraints, dataTokens, new PageRouteHandler("~/Views/Home/RouteDemo.aspx"));
RouteTable.Routes.Add(route2);
1.5缺省URL参数
id = UrlParameter.Optional
表明最后一个参数是可选的。此处可以猜测,存在一个解析器来判断UrlParameter。
敬请期待~~
MVC 路由模块分析(一)的更多相关文章
- ASP.NET MVC中分析淘宝网页发生乱码标题搞定方法
ASP.NET MVC中分析淘宝网页发生乱码标题搞定方法 近来正在分析淘宝中商品的信息,效果发生乱码,如: 原因便是中文字符格式发生冲突,ASP.NET MVC 默认采用utf-8,可是淘宝网页采用g ...
- MVC组件分析
MVC组件分析 2 System.Web.Mvc V 4.0.0.0 组件分析 2.1 Routing组件(路由选择) Routing的作用就是负责分析Url Action的要求• 必须是一个公有 ...
- ASP.NET CORE MVC用时分析工具MiniProfiler
ASP.NET CORE MVC用时分析工具MiniProfiler MiniProfiler(https://miniprofiler.com/)是一个轻量级且简单易用的分析工具库,它可以用来分析A ...
- 老罗学习MVC之旅:MVC组件分析
2System.Web.Mvc V 4.0.0.0 组件分析 2.1 Routing组件(路由选择) Routing的作用就是负责分析Url Action的要求• 必须是一个公有方法• 必须返回A ...
- Cocoa的MVC架构分析 cocoa的mvc实现
Cocoa是Mac OS和iPhone OS上的开发框架,使用Objective-C做为开发语言.当然,在代码中也可以嵌入C和C++的语句.初识Objective-C时会觉得它的语法很奇怪,但本质上和 ...
- MVC组件分析(转)
2System.Web.Mvc V 4.0.0.0 组件分析 2.1 Routing组件(路由选择) Routing的作用就是负责分析Url Action的要求• 必须是一个公有方法• 必须返回Act ...
- Cocoa的MVC架构分析
Cocoa是Mac OS和iPhone OS上的开发框架,使用Objective-C做为开发语言.当然,在代码中也可以嵌入C和C++的语句.初识Objective-C时会觉得它的语法很奇怪,但本质上和 ...
- Spring Mvc原理分析(一)
Servlet生命周期了解 Servlet的生命(周期)是由容器(eg:Tomcat)管理的,换句话说,Servlet程序员不能用代码控制其生命. 加载和实例化:时机取决于web.xml的定义,如果有 ...
- Autofac.Integration.Mvc.Owin分析
using System; using System.ComponentModel; using System.Diagnostics.CodeAnalysis; using System.Secur ...
随机推荐
- PPTP服务器配置选项详解
导读 PPTP服务器配置文件的格式与其它许多Unix程序相似,每一行包含一项配置内容,以配置选项名称开始,后面紧跟参数值或者关键字,它们之间用空格分隔.在读取配置文件时,pptpd进程将忽略空行和每一 ...
- AspectJ报错:error at ::0 can't find referenced pointcut XXX
今天在使用AspectJ进行注解切面时,遇到了一个错误. 切点表达式就是无法识别——详细报错信息如下: Exception in thread "main" org.springf ...
- 九度 OJ1008 hdu 3790
#include<stdio.h> #include<string.h> struct node { int d; int p; }g[][]; #define inf 0x3 ...
- Install ssdb-rocks on CentOS 6
Install ssdb-rocks on CentOS 6 C.C. 发表于 2014年08月10日 20:14 | Hits: 649 为了优化节操精选的弹幕系统,打算更换到Facebook的R ...
- hdparm测试硬盘性能
<1>Centos安装hdparm测试硬盘性能 一.安装hdparm yum install hdparm -y Linux学习,http:// linux.it.net.cn 二.评估读 ...
- 【云计算】Dockerfile示例模板
Dockerfile FROM debian:jessie MAINTAINER "Konrad Kleine" USER root ####################### ...
- codeforces B. Eight Point Sets 解题报告
题目链接:http://codeforces.com/problemset/problem/334/B 一开始看到题目,有点怯,理解了题目后,其实并不难.这句话是突破口 three distinct ...
- NEFU 1142 表哥的面包
表哥的面包 Problem:1142 Time Limit:1000ms Memory Limit:65535K Description 可爱的表哥遇到了一个问题,有一个长为N(1≤N≤10^18)的 ...
- javascript输出AscII码扩展集中的字符
function test(){ var c=""; for(var i=1;i<65536;i++){ if((i%10)==0){ c+=i+':\t'+String.f ...
- 如何手动修改XP系统属性中的技术支持信息
\windows\system32目录下有个oeminof.ini,里面是OEM显示的文字信息,把相应项目修改即可,OEM图片使用的是本目录下的OEMlogo.bmp(图片:创建一个图形文件,像素尺寸 ...