2012-12-17 19 views
2

我使用urlrewrite.net建立友好的URL,并在我的web.config以下重写规则:urlrewrite.net - 实时查询字符串附加在回发

<if url="^/forsale/(.+)/(.+)/(.+)/(.+)/(.+)"> 
<rewrite to="/aircraft/result.aspx?view=$2&amp;cat=$3&amp;loc=$4&amp;model=$5" /> 
</if> 

这意味着我现在可以浏览: http://www.mydomain.com/dept/manufacturer/,734,,810,,159,,163,,,,,,,,/1/999999/false

查看的实际网址: http://www.mydomain.com/folder/result.apsx?view=,734,,810,,159,,163,,,,,,,,/1/999999/false?view=,734,,810,,159,,163,,,,,,,,&cat=1&loc=999999&model=false

,直到我触发任何形式的回发事件的这工作得很好(点击链接等),此时真正的页面的查询字符串添加到URL重写例如末尾:

http://www.mydomain.com/dept/manufacturer/,734,,810,,159,,163,,,,,,,,/1/999999/false?view=,734,,810,,159,,163,,,,,,,,&cat=1&loc=999999&model=false

任何帮助/建议/答案将不胜感激。

谢谢。

+0

检查ispostback – Paparazzi

回答

5

.NET Framework 3.5 SP1中的ASP.NET提供了一种非常简单的方法来解决这个问题。现在,您可以使用名为Action的HtmlForm类的属性将回发URL设置为在发生任何重写之前浏览器请求的回发URL。在ASP.NET中,您可以使用HttpRequest.RawUrl属性获取该URL。因此,要解决回传网址为您的Web表单,当您使用URL重写模块,则需要将下面的代码添加到页面:

protected void Page_Load(object sender, EventArgs e) 
{ 
    form1.Action = Request.RawUrl; 
} 

点击这里查看详细:

ASP.NET postbacks and URL rewriting

此外,检查:

处理ASP.NET回发与URL重写

使用ASP.NET 2.0,您可以使用更清晰的技巧来重写控件上的“操作”属性。具体而言,您可以利用新的ASP.NET 2.0控制适配器扩展性架构来自定义控件的呈现,并使用您提供的值覆盖其“action”属性值。这并不要求您更改.aspx页面中的任何代码。相反,只需添加一个.browser文件到注册表的控制适配器类用来输出新的“action”属性的/ App_Browsers文件夹:

点击这里查看详细:

Tip/Trick: Url Rewriting with ASP.NET

+0

我昨天实际上发现了这个,刚刚回到这里来更新/回答我的问题。从技术上讲,我也打败了你,但不好意思把你当成正确的答案。感谢您抽出宝贵时间回复,真心感谢。 –