2011-03-15 99 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包裝按鈕,所有按預期工作。