作用

一般的URL:

举例:http://www.myapp.com/app.aspx?id=2&sessionid=29320xafafa02fa0zga0g8a0z

缺点:

  1. 不美观,不清晰
  2. 搜索引擎不友好,爬虫无法知道文件名后的更多地产品分类

  因此,需要把它映射成更简单易用、涵盖信息更广的URL。

路由映射基础

相关类:RouteCollection

命名空间:System.Web.Routing

方法:RouteCollection.MapPageRoute(),实例方法

基本思路:要使用URL路由引擎,首先注册路线图。路线图只是从路径表达式到磁盘上的实际页面的一个映射。这些路径在应用程序启动时注册,注册操作通常包含在单独的方法中,如下面代码所示,代码段来自Global.asax.cs文件:

 void Application_Start(object sender,EventArgs e)
{
//Code that runs on application startup
InitializeRoutes(RouteTable.Routes);
}
private void InitializeRoutes(RouteCollection routes)
{
//...perform route registration
routes.MapPageRoute(...);
}

注:routes为RouteCollection的实例

  下面总结URL路由的用法,基本上就是RouteCollection.MapPageRoute()的各种重载方法。

1.映射基础URL

 routes.MapPageRoute("login","login","~/Login.aspx);  

2.映射包含参数的URL

 routes.MapPageRoute("blog","blog/{year}/{month}/{day}","~/Blog.aspx");

  参数的查询不能通过Request.queryString来获取,因为参数并不是查询字符串的一部分,参数存在RouteData字典中。正确代码如下:

 protected void Page_Load(object sender,EventArgs e)
{
string year=RouteData.Values["year"] as string;
string month=RouteData.Values["month"] as string;
string day=RouteData.Values["day"] as string;
//Perform blog processing based on date parameters
}

3.映射包含多个段的URL

  将一个星号(“*”)置于命名参数之前:

 routes.MapPageRoute("products-by-tag","products/tags/{*tagnames}","~/ProductsByTag.aspx");

  其中,tagnames中的各字段用单斜线(“/“)分割。

4.使用包含默认参数的路由

 routes.MapPageRoute("category-browse","category/{categoryname}","~/Category.aspx",true,
new RouteValueDictionary()
            {
              {"categoryname","explosives"}
            });

  注意的是,目标页面无需知道是否使用的时默认值,仅需从RouteData字典中捕获类别名称即可。

5.使用约束路由

  这些约束采用正则表达式进行。

 routes.MapPageRoute(
  routeName:"constrained-blog",
  routeUrl:"cblog/{year}/{month}/{day}",
  physicalFile:"~/Blog.aspx",
  checkPhysicalUrlAccess:True,
  defaults: new RouteValueDictionary({{"year",DateTime.Now.Year.ToString()},...},
  constraints:new RouteValueDictionary() {
      {"year",@"\d{0,4}"},
{"month",@"\d{0,2}"},
{"day",@"\d{0,1}" }
      }
 );

[读书笔记]ASP.NET的URL路由引擎的更多相关文章

  1. asp.net MVC URL路由入门指南

    asp.net MVC 的URL路由是一个非常强大的功能,而且有个优点:强大单不复杂.然而,目前我在网上看到的相关资料,却都仅仅提供一些示例,仅通过这些示例,初学者基本上不可能明白为什么要这么配置,更 ...

  2. ASP.NET MVC——URL路由

    在MVC之前,ASP.NET假设请求的URL与服务器上的文件之间有关联,服务器接受请求,并输出相应的文件.而在引入MVC后,请求是由控制器的动作方法来处理的.为了处理URL,便引入了路由系统. 首先我 ...

  3. MySQL技术内幕读书笔记(二)——InnoDB存储引擎

    目录 InnoDB存储引擎 InnoDB存储架构 Checkpoint技术 Master Thread 工作方式 InnoDB关键特性(放一下,感觉看后面,再看总结吧) InnoDB存储引擎 Inno ...

  4. 【读书笔记】iOS-自定义 URL Scheme 完全指南

    iPhone / iOS SDK 最酷的特性之一就是应用将其自身”绑定”到一个自定义 URL scheme 上,该 scheme 用于从浏览器或其他应用中启动本应用.   注册自定义 URL Sche ...

  5. 【读书笔记】iOS-自定义URL Scheme注意事项

    如果两个不同的应用注册了同样的URL Scheme,那么后安装的应用会响应符合这种协议格式的URL. 如果你的应用的iPhone和iPad版是各自独立的(即不是Universal类型的),那么你就不应 ...

  6. 《大数据日知录》读书笔记-ch1数据分片与路由

    目前主流大数据存储使用横向扩展(scale out)而非传统数据库纵向扩展(scale up)的方式.因此涉及数据分片.数据路由(routing).数据一致性问题 二级映射关系:key-partiti ...

  7. 《深入理解 Java 虚拟机》读书笔记:虚拟机字节码执行引擎

    正文 执行引擎是 Java 虚拟机最核心的组成部分之一.在不同的虚拟机实现里,执行引擎在执行 Java 代码时可能会有解释执行(通过解释器执行)和编译执行(通过即时编译器产生本地代码执行)两种选择,也 ...

  8. 《Entity Framework 6 Recipes》中文翻译系列 (21) -----第四章 ASP.NET MVC中使用实体框架之在页面中创建查询和使用ASP.NET URL路由过虑

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 4.2. 构建一个搜索查询 搜索数据是几乎所有应用的一个基本功能.它一般是动态的,因 ...

  9. [译]ASP.NET Core 2.0 路由引擎

    问题 ASP.NET Core 2.0的路由引擎是如何工作的? 答案 创建一个空项目,为Startup类添加MVC服务和请求中间件: public void ConfigureServices(ISe ...

随机推荐

  1. 射手网字幕打包下载(73.16G)

    射手网陪着我度过15年了. 我所希望射手网所具有的价值,就是能令更多人跨越国家的樊篱,了解世界上不同的文化. 如果这个网站有帮到人,我就已经很满足了. 但是,需要射手网的时代已经走开了. 因此,今天, ...

  2. [Android] 关于系统工具栏和全屏沉浸模式

    随着应用程序的一些深入设计,大家总想要更好的界面和体验,所以有些东西并不能只是知道方法就结束了,是得要去深入研究研究的.通过这个过程我觉得,从应用层面来讲,想实现一个功能很简单,但若想实现的好,就要去 ...

  3. Supervisor行为分析和实践

    1.简介     Erlang要编写高容错性.稳定性的系统,supervisor就是用来解决这一问题的核心思想.通过建立一颗监控树,来组织进程之间的关系,通过确定重启策略.子进程说明书等参数信息来确定 ...

  4. 什么是SPF?如何设置企业邮箱的SPF呢?(TXT记录)

    什么是SPF?   (Sender Policy Framework) 的缩写,一种以IP地址认证电子邮件发件人身份的技术,是非常高效的垃圾邮件解决方案. 接收邮件方会首先检查域名的SPF记录,来确定 ...

  5. Drupal如何SQL查询传递参数?

    Drupal使用称之为“placeholder”的方式处理SQL查询参数: <?php // WRONG: $result = db_query("SELECT nid, title ...

  6. python+selenium环境搭建

    这里主要基于windows平台. 下载python.http://python.org/getit/ 下载setuptools [python的基础包工具].http://pypi.python.or ...

  7. CSS概述<选择器总结>

    概述:CSS是指层叠样式表,他是定义如何显示HTML元素,样式表通常存储在样式表中,通常存储在.css文件中,下面对css的选择器进行总结,便大家夯实基础! 1 语法规范: 每个样式规则有两个部分:选 ...

  8. C# 类和结构

    类和结构实际上都是创建对象的模板,每个对象都包含数据,并提供了处理和访问数据的方法 . 类定义了类的每个对象(称为实例)可以包含什么数据和功能. 例如,如 果一个类表示一个顾客,就可以定义字段 Cus ...

  9. 使用FTP搭建YUM

    VSFTP搭建YUM源 1.安装FTP [root@FTP kel]# rpm -qa |grep vsftp vsftpd-2.2.2-6.el6_0.1.x86_64 首先需要安装的ftp软件为v ...

  10. PHP 代码质量检测工具的安装与使用

    代码统计工具 PHPLOC安装:wget https://phar.phpunit.de/phploc.phar chmod +x phploc.phar sudo mv phploc.phar /u ...