[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如没有找到目录或文件时会报错。
  

一个基于 EasyUI 的前台架构(4)主体页面框架收工

在上一篇博客已经完成一个大概的框架效果,还有一个最为重要的功能还没有完善——菜单。   我现在使用的这个项目使用的是 jQuery EasyUI 中的 Tree 来 Building 的一个树形菜单...
  • wilsonke
  • wilsonke
  • 2013年08月22日 01:16
  • 1215

Android 4.4.源码 如何屏蔽Home键

做了一个锁屏app替换系统的app ,但是在应用层是无法屏蔽home键的,找了资料,改了源码,终于解决 代码位置 frameworks\base\policy\src\com\android\int...
  • qq_25815655
  • qq_25815655
  • 2016年06月03日 19:19
  • 1487

Jenkins安装与配置

Jenkins安装与配置 发表于10个月前(2014-09-26 09:38) 阅读(3516) | 评论(1) 15人收藏此文章,我要收藏 赞1 目录[-] Jenkins...
  • zhousenshan
  • zhousenshan
  • 2015年07月22日 22:45
  • 3214

asp.net 返回上一页的实现方法小集(转)(http://www.cnblogs.com/liping19851014/archive/2007/07/14/818173.html)

返回上一页的这个东东在我们做项目的时候一般是用于填写完表单后确认的时候,有对原来输入的数据进行修改时用的,或者是因为网站为了方便浏览者而有心添加的一个东东,一般这种功能的实现在ASP.net中都是用一...
  • liulu132
  • liulu132
  • 2013年05月30日 11:28
  • 730

给没有源代码的.NET程序“打补丁“(转http://www.cnblogs.com/lerit/archive/2011/08/22/2148858.html#2182758)

公司为一个web应用程序写了一个注册机,基本原理是用户运行这个软件后,得到一个申请码,然后公司根据这个申请码给出相应注册码,匹配后方可正常使用web软件。在别人机子上没有问题,但是我机子上运行软件后死...
  • fjfdszj
  • fjfdszj
  • 2011年11月18日 15:51
  • 1207

http://www.cnblogs.com/YSO1983/archive/2010/06/10/1755665.html

下面我总结下我对out和ref引用参数的看法:  1.out和ref引用参数的相同点:都是通过引用传递参数给函数;  2.out和ref引用参数的不同点是:用ref引用传递参数,该参数必须经过初始...
  • jeksonal
  • jeksonal
  • 2013年05月08日 19:35
  • 1089

http://www.cnblogs.com/hnrainll/archive/2013/11/06/3410042.html

目录 Java垃圾回收概况Java内存区域Java对象的访问方式Java内存分配机制Java GC机制垃圾收集器 Java垃圾回收概况   Java GC(Garbage Collectio...
  • he_you_qing
  • he_you_qing
  • 2016年08月04日 09:45
  • 835

http://www.cnblogs.com/dotnetdoor/archive/2008/06/09/1216125.html

1 引言      Java的一个重要优点就是通过垃圾收集器GC (Garbage Collection)自动管理内存的回收,程序员不需要通过调用函数来释放内存。因此,很多程序员认为Java 不存在...
  • u011821510
  • u011821510
  • 2015年05月18日 19:34
  • 352

我对架构师的理解(如何成为一个合格的架构师)http://www.cnblogs.com/daoxuebao/archive/2012/06/14/2549967.html

转自:http://www.cnblogs.com/daoxuebao/archive/2012/06/14/2549967.html 引子:         在讨论架构之前,我们先上道菜,青...
  • robberM
  • robberM
  • 2013年04月10日 17:58
  • 892

Hive操作语句的使用实例讲解、http://www.cnblogs.com/viviman/archive/2013/02/06/2907631.html

Hive操作语句的使用实例讲解 #创建表人信息表  person(String name,int age)  hive> create table person(name STRING,age...
  • shiqilin987
  • shiqilin987
  • 2014年04月08日 23:12
  • 511
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[ASP.net]URL重写续篇 http://www.cnblogs.com/hd/archive/2005/06/21/178367.html
举报原因:
原因补充:

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