ScriptManager控件保留历史哈希

时间:2011-03-15 18:00:13

标签: c# asp.net history scriptmanager

我使用ScriptManager控件从服务器Web服务加载搜索结果。页面上有一个文本框和按钮,用户可以在其中输入搜索条件。当他们提交搜索时,会向搜索页面调用Response.Redirect。我使用ScriptManager的历史记录功能来跟踪用户可以执行的过滤。如果您熟悉此功能,则URL最终会显示如下:

http://somesite/search.aspx?q=giant+dog#color=red&hair=long

我的问题是,如果用户想要使用search.aspx页面上的文本框和按钮进行另一次搜索,这会导致response.redirect,则查询字符串会更改,但哈希历史记录仍然是URL的一部分。这对我来说没有意义,因为根据我对Response.Redirect("someURL")的理解,它应该像是将它发送到新页面而不管它是否会转到它离开的同一页面。

我知道我可以设置window.location.hash = "#",但我希望有一种比服务器端更清晰的方式。

请帮忙! : - )

2 个答案:

答案 0 :(得分:1)

这是一篇旧帖子,但我想我会添加解决方案以防其他人在寻找这个。我遇到了同样的问题,在进行Response.Redirect()调用时,历史记录点在邮件背后维护到服务器。我不确定为什么会这样,这对我来说似乎是违反直觉的。但是我相信ScriptManager正在做一些事情来传承历史。

答案是让您的控件在Response.Redirect()内发出UpdatePanel来电。所以,在我的情况下,我有一个按钮,它有一个事件处理程序,正在发出重定向。如果没有UpdatePanel,则会保留历史记录点。使用UpdatePanel包裹按钮,所有按预期工作。

答案 1 :(得分:0)

您可以在AddHistoryPoint之前调用ScriptManager的{​​{1}}方法。