【问题标题】:ScriptManager Control preserves history hashScriptManager Control 保留历史哈希
【发布时间】:2011-03-15 18:00:13
【问题描述】:

我正在使用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 = "#",但我希望有比服务器端更简洁的方法。

请帮忙! :-)

【问题讨论】:

    标签: c# asp.net history scriptmanager


    【解决方案1】:

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

    答案是将发出Response.Redirect() 调用的控件放在UpdatePanel 中。所以,在我的例子中,我有一个按钮,它有一个正在发出重定向的事件处理程序。如果没有UpdatePanel,历史记录点将被保留。使用 UpdatePanel 包裹按钮,一切正常。

    【讨论】:

      【解决方案2】:

      您可以在Redirect 之前调用ScriptManagerAddHistoryPoint 方法。

      【讨论】:

        猜你喜欢
        • 2010-12-21
        • 1970-01-01
        • 1970-01-01
        • 2015-10-29
        • 2020-02-13
        • 2010-11-30
        • 2014-09-22
        • 1970-01-01
        • 2019-07-18
        相关资源
        最近更新 更多