概述

主要分为四个部分进行分析。

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。

敬请期待~~

最新文章

  1. 试图加载格式不正确的程序。 (异常来自HRESULT:0x8007000B)
  2. 更改SQL Server 数据库的排序规则
  3. Maven基础笔记,原理
  4. POJ C程序设计进阶 编程题#2: 配对碱基链
  5. zTree实现基本树
  6. EBS-PAC成本更新事务处理
  7. Linux cp -a用法
  8. Android: Receiving Data from the Send Intent,自己app注册系统分享
  9. Java数据结构与算法(2) - ch03排序(冒泡、插入和选择排序)
  10. 首页音乐播放器添加&quot;多首音乐&quot;
  11. 【JAVA零基础入门系列】Day15 对象的比较
  12. XCTF体验题库 : ReverseMe-120
  13. linux系统 之 git
  14. linux 2.6.32.220的一个crash记录
  15. scala 学习笔记十二 继承
  16. matplotlib中的legend()&mdash;&mdash;用于显示图例
  17. hapi lab测试框架简单使用
  18. java中的集合类总结
  19. 数据泵导出oracle 10g数据库
  20. poj3411

热门文章

  1. Spring各个jar包的简介
  2. 给定一个值S,在有序数组中找出两个元素A和B,使 A+B = S.
  3. 快速诊断Linux性能
  4. 搭建DNS服务器
  5. JdbcTemplate三种常用回调方法
  6. PCA
  7. Delphi10 安装Graphics32
  8. Nth to Last Node in List
  9. annotation(@Retention@Target)详解
  10. Kmin