【C#】 用Route进行URL重写
在.NET Framework 4中,微软推出了Route机制。这种机制不仅在MVC中大量运用,在WebForm中也可以使用。
和Contex.RewritePath()一样,Route功能也是写在Global.asax文件中。
1.设置默认页面
具体代码如下:

如代码所示,该路由会将网站默认转向SimpleURLRewriting页面。
实际访问后,效果如下:

2.配置参数
在实际项目中,我们访问网站时经常会使用参数,像这种情况应该怎么配置呢。
Global.asax:

页面后台代码:

它将获取URL中占位符为{parameter}的参数,因此通过此重写规则可访问如下页面:

但是对如下URL的请求,参数无效果

上图中,虽然没有在占位符为{parameter}的位置设置参数,参数项显示不为空。
这是因为在设置路由时,给{parameter}设置了默认参数。

3.设置正则表达式
除了想上面所示重写URL,设置默认页面及默认参数外,还能让占位符的参数满足一定的正则条件。

根据设置的正则条件要求,parameter必须是数字。

如不满足,则找不到改页面

4.PostBack数据回送

在设置默认页面时我们会发现,与使用Contex.RewritePath()后的效果不同,
使用路由功能后,页面的URL与地址栏中的URL保持一致。
因此在PostBack的时候,无需像Contex.RewritePath()一样对Form进行改写。
现在让我们看看实际效果:
重写规则代码:


5.链接处理
对URL进行重写后,可能会导致相对链接、图片和CSS的访问路径不正确的问题。
如在EN/SimpleURLRewriting.aspx中

访问页面时

因此当如果出现URL重写导致相对路径不正确时,为了确保这个图像和链接指向正确的网址,最好指定绝对路径地址。
【C#】 用Route进行URL重写的更多相关文章
- asp.net mvc 中 一种简单的 URL 重写
asp.net mvc 中 一种简单的 URL 重写 Intro 在项目中想增加一个公告的功能,但是又不想直接用默认带的那种路由,感觉好low逼,想弄成那种伪静态化的路由 (别问我为什么不直接静态化, ...
- Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
转载:http://freeloda.blog.51cto.com/2033581/1288553 大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负 ...
- 用.htaccess文件实现URL重写
注:第一部分来自 http://www.cnblogs.com/wangkongming/archive/2012/11/13/2768251.html 这位博主的个人网站简洁 还有诗歌 ...
- ASP.NET Core中使用URL重写
ASP.NET Core 1.1 Preview 1 中新增了 URL Rewriting middleware ,终于可以进行 URL 重写了,实际使用体验一下. 首先要将 ASP.NET Core ...
- 微软的坑:Url重写竟然会引起IIS内核模式缓存不工作
万万没有想到!当初为了解决使用负载均衡时记录客户端IP地址的问题,在IIS URL Rewrite Module中增加了一条URL重写规则(详见迁入阿里云后遇到的Request.UserHostAdd ...
- 【url重写】
一.原理void Application_BeginRequest(object sender, EventArgs e) { //url重写 HttpApplication a ...
- UrlRewritingNet伪静态的使用方法与解决方案(URL重写)
在建站初期时,我们往往需要考虑的是使用真静态还是伪静态,这对于往后的站点配置,延展性都会产生深远的影响. 我使用伪静态的唯一目的:SEO优化.毋容置疑,伪静态在对于Spider是非常有利的,因此,我更 ...
- nginx的URL重写应用实例
1,NGINx的URL重写 NGINX 的URL重写模块用的比较多,主要使用的命令有if rewrite set break 2 if命令 语法如下"" 语法:if(conditi ...
- springMVC学习之url重写:urlrewrite with tuckey UrlRewriteFilter
在开发网站时地址栏的一些信息是我们不希望让客户看到,所以在开发时候就会涉及到url重写的问题. 下面介绍一种常用的url地址重写的方法. 1.利用maven下载相关jar文件,pom文件配置如下: & ...
随机推荐
- 给UIView添加手势
对于不能addTarget的UI对象,添加手势为他们带来了“福音”,以为UIView添加手势为例,揭开手势的面目. 1,创建一个view先, UIView * jrView=[[UIViewalloc ...
- word20161203
B-channel / B 信道 B-ISDN, broadband integrated services digital network / 广播综合业务数字网络 backbone router ...
- HTTP协议与HTTPS协议区别
HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议: 它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息,它使用安全套 ...
- Python自动化之sqlalchemy复合外键
复合外键用法 metadata = MetaData(engine) classedu = Table('classedu', metadata, # Column('qq', BigInteger, ...
- Droid4x设置代理抓包
Droid4x也是基于virtualbox+x86架构的 代理设置 设置->WIFI->鼠标按住WiredSSID选项不放->修改网络->显示高级选项->代理-> ...
- linux——基本配置
环境:Ubuntu 12.04.2 LTS (GNU/Linux 3.5.0-23-generic i686) 网络配置 #临时改变 #修改IP和子网掩码 sudo ifconfig eth0 192 ...
- Contains Duplicate III
Given an array of integers, find out whether there are two distinct indices i and j in the array suc ...
- Java 抽象类与oop三大特征
面向对象主要有三大特性:继承和多态.封装. 一.抽象类 在了解抽象类之前,先来了解一下抽象方法.抽象方法是一种特殊的方法:它只有声明,而没有具体的实现.抽象方法的声明格式为: abstract voi ...
- Redis集群的部署
Redis集群分为主节点Master和从节点Slave,主节点只有1个,而从节点可以有多个,这样从节点和主节点可以进行数据的传输,Redis集群的性能将比单机环境更高,接下来是配置的过程 首先配置Ma ...
- JSON 数据格式
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言.易于人阅读和编写,同时也易 ...