[ASP.net]URL重写续篇 http://www.cnblogs.com/hd/archive/2005/06/21/178367.html

转载 2007年10月08日 16:26:00
昨天写了个URL重写,因为在重写后的URL里有一个小小的Bug的,就是在Post数据时会把原URL里的地址变成GET。

(ASP.net的URL重写文一)

比如原地址URL为:http://localhost/Test/Default.aspx
重写后的URL:http://localhost/Test/2004/12/News.aspx
而在Default.aspx文件里有Post数据(如Post文本)。那么这时重写后的URL就会变为:http://localhost/Test/2004/12/News.aspx?ID=12

显然,这不是我们想要的URL也不是标准的。

其实,有细读过在MS上的MSDN里的这篇文章的朋友都知道,里面已经有讲述了且问题也已经解决了的。
http://www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx

可能上面链接的文档相对较长,有朋友读完到URL重写后就没再往下看了。在文章下头里有细说明,怎么个把Form的Action清除掉。这里我所插一句的是:在ASP.net的页面WebForm里,一个页面只能有一个Form,但同时,这个Form的Action是不可变的(即只能Post数据回本页面)。如需要变动,则要自己写一个Form控件,此控件继承System.Web.UI.HtmlControls.HtmlForm接口。

这里是URLRewriter的源码下载:
http://upserver2.ys168.com/ys168up/D1/ys1.aspx?f=MSDNURLRewriting.msiy71z73f8b3f8b4b0f8z95b6b1f9b5f9f5f9b1f8b0b2b1f6e09e15e05e24b1b0f2b0f9f9b1f6b7f8b1z

在这个源码中,找到URLRewriter.dll和ActionlessForm.dll这两个DLL文件。其实一整个源码就只有这两个文件有用的。
第一个不用多说了,前文已经说了怎么用这个DLL。对于ActionlessForm.dll这个就是一个控件,用法也很简单:

首先把ActionlessForm.dll拷入你的项目中的bin目录,然后在你的VS.net的项目中引用这个dll。再在你原有的(即没重写的).aspx页面中

第一步:把这句加于代码顶部:
<%@ Register TagPrefix="skm" Namespace="ActionlessForm" Assembly="ActionlessForm" %>
第二步:
<form id="Form1" method="post" runat="server">和</form>
替换成:
<skm:Form id="Form1" method="post" runat="server">和</skm:Form>

OK,现在你可以再运行程序试试了。
----------

附:为什么URL就会变为:http://localhost/Test/2004/12/News.aspx?ID=12
其实很简单,因为在web.config中有这样的一句:
<SendTo>~/Default.aspx?ID=$2</SendTo>
在没有替换form之前,你查看页面的源码就可以看到,你的form的Action是到(以上面的例子):Default.aspx?ID=12
即.aspx页面最后生成的HTML是:
<form id="Form1" name="Form1" method="post" action="Default.aspx?ID=12"></form>

还有,如果想用URL重写后的格式为以目录形式即不用加Default.aspx:
http://localhost/Test/2004/12
则要新建相应的目录和文件Default.aspx。
如上例子:http://localhost/Test/2004/12
则要新建2004目录和在此目录下新建12目录,再在12目录下新建Default.aspx文件。文件内容可为空。

至于为什么,是因为IIS如没有找到目录或文件时会报错。
  

Javaweb开发基础视频教程之http协议

-
  • 1970年01月01日 08:00

create samba server

1. install samba sudo apt-get install samba sudo apt-get install cifs-utils sudo apt-get install sam...
  • Decisiveness
  • Decisiveness
  • 2016-04-03 12:22:14
  • 174

K-means均值聚类算法的原理与实现

转自:http://blog.csdn.net/xiaolewennofollow/article/details/45541159 K-均值聚类算法的原理与实现 聚类是一种无监督的学习,它将相似的对...
  • u011331731
  • u011331731
  • 2017-06-02 09:48:57
  • 469

.net中用户域帐号进行验证

http://www.cnblogs.com/flier/archive/2005/04/27/55266.html
  • amandar
  • amandar
  • 2005-09-27 17:19:00
  • 1015

http详解(http://www.cnblogs.com/TankXiao/archive/2012/02/13/2342672.html)

当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等。 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了We...
  • uestcyao
  • uestcyao
  • 2012-08-10 11:26:05
  • 13719

关于JavaScript相关文章

1)JavaScript框架之继承机制   (1)JavaScript框架之继承机制(一)   地址:http://www.cnblogs.com/rubylouvre/archive/2...
  • tanguang_honesty
  • tanguang_honesty
  • 2014-05-21 15:43:22
  • 469

html5中常用的一些功能

1,context.createRadialGradient这个方法的使用 http://imatlas.com/posts/canvas-createradialgradient/ 2,html5...
  • xieshuhi_2013
  • xieshuhi_2013
  • 2016-06-23 21:41:51
  • 307

WPF-Win8树节点效果-源码

  • 2014年03月26日 11:07
  • 52KB
  • 下载

Java面试题(干货~)

来自:https://github.com/JackyAndroid/AndroidInterview-Q-A/blob/master/README-CN.md 一、java基础 1.接口的意义...
  • kissfan_7
  • kissfan_7
  • 2016-07-22 00:52:06
  • 606

四元数学习

link: http://www.cnblogs.com/mengdd/archive/2013/08/05/3238223.html http://www.cnblogs.com/wqj1212/...
  • kasteluo
  • kasteluo
  • 2017-06-22 15:31:00
  • 456
收藏助手
不良信息举报
您举报文章:[ASP.net]URL重写续篇 http://www.cnblogs.com/hd/archive/2005/06/21/178367.html
举报原因:
原因补充:

(最多只允许输入30个字)