【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重写导致相对路径不正确时,为了确保这个图像和链接指向正确的网址,最好指定绝对路径地址。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?