2011-03-15 97 views
2

我正在使用ScriptManager控件从服务器Web服务加载搜索结果。用户输入搜索词的页面上有一个文本框和按钮。当他们提交他们的搜索时,会有一个Response.Redirect被调用到搜索页面。我使用ScriptManager的历史记录功能来跟踪用户可以执行的过滤。如果您熟悉此功能的URL最后应该是这样的:ScriptManager控件保留历史哈希

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

我的问题是,如果用户deices做的文本框和按钮search.aspx页面上,这会导致另一个搜索一个response.redirect,查询字符串发生了变化,但哈希历史记录保留了一部分URL。这对我来说没有意义,因为根据我对Response.Redirect("someURL")的理解,它应该像发送给您一个新页面一样,而不管它是否会返回到相同的页面。

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

请帮忙! :-)

回答

0

您可以调用AddHistoryPoint方法ScriptManager,之前Redirect

1

这是一个旧帖子,但我想我会添加解决方案,以防其他人在寻找这个。我遇到了同样的问题,在调用Response.Redirect()调用时,历史记录点在发送回服务器的过程中被维护。我不知道为什么会发生这种情况,这对我来说似乎是反直觉的。但我相信ScriptManager正在做一些事情来完成历史重点。

答案是将您的控件发出Response.Redirect()呼叫UpdatePanel。所以,在我的情况下,我有一个按钮,其中有一个事件处理程序,其中发出重定向。没有UpdatePanel,历史点被保留。使用UpdatePanel包装按钮,所有按预期工作。