【发布时间】:2011-04-01 02:46:36
【问题描述】:
我正在寻找一种方法来摆脱页面的查询字符串并重定向到自身,但以某种方式保留查询字符串数据。
示例:http://www.test.de/somepage.aspx?id=abc 应重定向到 http://www.test.de/somepage.aspx。不过,在重定向之后,我希望能够获取最初传递的参数。而且我不想在浏览器的历史记录中出现http://www.test.de/somepage.aspx?id=abc。
到目前为止我尝试了什么:
Response.Redirect():在不创建浏览器历史记录的情况下进行正确的重定向,但我无法保留参数。Server.Transfer:保留参数但浏览器的URL保持不变。即时创建客户端表单并在
onload中提交:有效,查询字符串已消失,可通过 Request.Form 访问参数,但会在浏览器中创建历史记录条目。
我目前唯一能想到的是将参数存储在会话中,然后重定向,然后从那里获取它们。但也许还有另一种解决方案?
【问题讨论】:
-
听起来您已经有了最佳答案 - 将 qs 存储在会话中并执行
Response.Redirect(url);。您是否有不想使用会话的原因? -
主要原因是处理它的复杂性。您可能会打开两个显示同一页面的浏览器选项卡,并且它们共享一个会话。如果处理时间不同,则很有可能会覆盖另一个。
标签: c# asp.net redirect browser-history