调试运行视频
python调试合集
java web 调试 视频合集
调试asp.net 项目相关合集
php 调试 视频合集
客服微信
客户问答
项目定制说明
作品发货方式
定制毕设需要的时间
成品可以修改吗
关于我们
翰文编程 CSDN博客
代做java毕业设计
信誉保证
购买流程
本站介绍
技术介绍
使用数据库
简单的基于地理图片的旅行路线还原
aScript 垃圾回收
Java中的不可变类
servlet 面试题
开发技术
ABO相关软件文件下载
基于Vue的生活废品回收系统的设计和实现
[免费获取]springboot 专升本志愿填报辅..
如何安装jdk
git 创建新项目,下载工程,合并和更新..
技术应用
ARM在adnroid开发应用
关于mysql
fusionCharts做bi展现基础技术
IoC容器类型
Ioc
移动手机软件的特点
J2ME介绍
手机软件现状
论文指导
广播电视大学论文应用指导要求
毕设题目参考二
毕设题目参考一
论文指导目录
开题报告指导
项目报告
论文开题报告格式
论文撰写的几大模块
当前位置:首页 > 查看
 

asp.net webform 路由

 来源:翰文编程 源码设计 定制服务  发布日期: 点击率:

我翻了翻两前的一份邮件, 是我当时在项目之余的时间研究的,那时还没用MVC,所有项目都是 WebForm 的.

该方案我觉得可行,但是某同志一句: 不是基于底层的路径映射,效率不高, 还是 URLRewrite 好. 我笑尿了. 算鸟,都是往事. 现在想想, 这位同志还是不错的, 和另外一些人一比, 还是很伟岸的(我真心这样认为).

 

正文

 

优化地址无非就两个选择 URLRewrite 和 MVC 里的路由(Route)

关于 URLRewrtie 和 Route 的区别,可参考:

http://www.infoq.com/cn/news/2008/11/urlrewriting

 

从 .NET 3.5 SP1 起, 微软把 MVC 路由单独抽出来,放到 System.Web.Routing 下, WebForm 程序从此可以用上路由了.

.NET 4 对路由做了改进, 使用起来很简单.. 我们的项目都是 .NET 4 的, SEO 以后肯定是要做的, 所以我试着对 Hotel.Online 做了一下路由.

现在把使用过程中的注意事项说一下.

 

1, Route 使URL 的层次目录改变了, 原来是 HotelInfo.aspx , 路由后,很可能是 HotelInfo/45956/2011-06-21 这一小小的改变,却带来了大的影响.

 

A, PostBack : 原来的 Form action = “HotelInfo.aspx” , 路由后变成 action=”2011-06-21” 了, PostBack 当然是不对的. 要避免这个问题,请在代码里加上这句:

this.Form.Action = Page.ResolveUrl("~/HotelInfo.aspx");

 

B, script 标签的问题 : 在页面里 link 标签的地址(href)会自动转换, 但是 script 标签的地址(src)却不会自动转换, 解决这个问题,有两个办法

l A, base , <base href=”/xxx” /> 如 <base href=”/xxx” /><script src=”main.js”></script> 就会自动指向 /xxx/main.js , 这个需要注意先后顺序, 如果 script 出现在 base 前, 则没有这个效果.

l 使用绝对地址. 为了简化, 和 ResourceSite 的处理方式一样, 我在 BasePage 里将 ~ 符号替换成了 http://xxx.xxx.xxxx/xxx , 所以, 只要继承 BasePage 的页面, 都可以直接写 <script src=”~/main.js”></script>

 

C, A标签的问题, 我看HTML代码里有很多 <a href=”###” onclick=”…” 的写法, 在不加 base 之前, ### 指向当前页, 但是加了 base 后, ### 就指向 base 设定的地址了. 为了避免这种情况, 应使用 href=”javascript:void()” onclick=”…” 或 href=”javascript:doSomething();return false;” 或干脆就不用 A 标签.

 

2, 使用Route 后访问地址从 HotelInfo.aspx?hid=45956&ds=2011-06-21&de=2011-06-25 变成了 HotelInfo/45956/2011-06-21/2011-06-25 , 使用 Request.QueryString 取不出 hid , ds, de 这些URL 参数了, 因为 hid, ds, de 就不是以 url 参数形式出现的. 要获取这些值, 就要使用另外一个东西: Page.RouteData.Values[key] 了, 这个 key 不区分大小写,和 QueryString 一样.

 

3, 脚本里的 POST / GET , 原来的页在都在同一个目录层次, 所以直接

请加微信,客服二维码请咨询购买,同时本程序源码配有系统运行视频 请联系客服索要视频文件


网址:毕设在线毕业设计网 http://www.bisheonline.net

服务范围:定制各类计算机程序设计,vue,jsp ,java 各类框架各类,开发工具 eclipse myeclipse idea vs 等,wap android ssm springboot asp.net php python (爬取,django,flask) vue node.js react ,winform uniapp小程序 等 E-mail:251836457@qq.com

友情链接: 翰文编程 CSDN博客   翰文编程 B站空间   计算机联盟  

翰文编程 源码设计 定制服务 版权所有

辽ICP备12012783


Copyright(C) 毕设在线(bisheonline.net) All Rights Reserved.


客服Q Q:251836457 翰文编程 源码设计 定制服务客服为你服务
360安全网址导航
Baidu