.net
使用UrlReWriter已经把路径全部虚拟了,访问并提交都没有问题,但是有一个缺陷是,只要在虚拟的页面中,有提交按钮或者是回发实现的地方,触发后,URL地址就会自动增加?
例:
路径为:http://localhost/2011021201.html
在本页面中提交后,在重新显示本页,url地址栏路径自动会变成
http://localhost/2011021201.html?id=2011021201
再次提交还是会有,并且是累加这个url
请问这个是如何产生的,如何去掉,url中只保留
http://localhost/2011021201.html谢谢!
使用UrlReWriter已经把路径全部虚拟了,访问并提交都没有问题,但是有一个缺陷是,只要在虚拟的页面中,有提交按钮或者是回发实现的地方,触发后,URL地址就会自动增加?
例:
路径为:http://localhost/2011021201.html
在本页面中提交后,在重新显示本页,url地址栏路径自动会变成
http://localhost/2011021201.html?id=2011021201
再次提交还是会有,并且是累加这个url
请问这个是如何产生的,如何去掉,url中只保留
http://localhost/2011021201.html谢谢!
<Rules>
<RewriterRule>
<LookFor>~/index.html</LookFor>
<SendTo>~/Index.aspx</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/(/d+)-(.*).html</LookFor>
<SendTo>~/Products/ProductsList.aspx?id=$1&SelectValue=$2</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/(/d+)/(.*).html</LookFor>
<SendTo>~/Products/ProductsDetails.aspx?ID=$1&CASNO=$2</SendTo>
</RewriterRule>
</Rules>
</RewriterConfig> 其中LookFor是地址栏显示的地址,SendTo是真实的反问地址。当页面带有多个参数的时候,如第一个用$1来表示,第二个用$2来表示,以此类推,而参数于参数中的链接符由"&"改为"&"。LookFor中的(/d+)这些就是正则表达式的写法了。 在页面中的链接也就要修改了,比如<a href="products/productsList.aspx?id=111&SelectValue=a">产品列表</a>就需要修改为<a href="111-a.html">产品列表</a>。 四、回发处理 1、将ActionlessForm.dll添加到项目的bin文件夹。 2、在aspx网页的代码中加<%@ Register TagPrefix="RW" Namespace="ActionlessForm" Assembly="ActionlessForm" %> 3、然后将form标签改为RW:Form(注意开始和结束都要改),TagPrefix可以自定义 4.打开IIS中的文件的属性==》虚拟目录==》配置==》添加。在可执行文件中输入:C:/WINDOWS/Microsoft.NET/Framework/v1.1.432/aspnet_isapi.dll;在扩展名输入*.Html;将确认文件是否存在去掉,点击确定。五、静态页面调用。在反问真正的html文件时,避免找不到文件报错,比如:要反问Link.html这个文件时,链接为www.test.com/Link.html,会出现没有为扩展名“.html”注册的生成提供程序。可以在 machine.config 或 web.config 中的 <compilation><buildProviders> 节注册一个。请确保所注册的提供程序具有包含值“Web”或“All”的 BuildProviderAppliesToAttribute 属性这个错误。在这个里面处理一下就可以了 <compilation defaultLanguage="c#" debug="true">
<assemblies>
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</assemblies>
<!-- 加上此节点,保证原本就是.html类型的文件能正常访问 -->
<buildProviders>
<add extension=".html" type="System.Web.Compilation.PageBuildProvider" />
</buildProviders>
</compilation>