Asp.net 当页面加载是AJAX历史记录点的结果时,如何检测客户端?

Asp.net 当页面加载是AJAX历史记录点的结果时,如何检测客户端?,asp.net,ajax,asp.net-ajax,browser-history,Asp.net,Ajax,Asp.net Ajax,Browser History,我试图防止在我的ASP.NET页面上出现“闪烁”效果,当用户在离开页面后通过“浏览器后退”按钮导航到该页面时会出现这种效果。闪烁的原因是我使用的更新面板在初始页面加载时有一些内容。因此,当通过“后退”按钮加载页面时,在使用正确的历史感知数据更新页面之前,初始内容会显示得非常短暂 为了克服这个问题,我打算在初始页面加载时隐藏updatepanel(display:none),然后在没有任何历史记录的情况下显示它。问题是我不知道要检查什么来确定是否有历史记录。我可以看到Sys.Application

我试图防止在我的ASP.NET页面上出现“闪烁”效果,当用户在离开页面后通过“浏览器后退”按钮导航到该页面时会出现这种效果。闪烁的原因是我使用的更新面板在初始页面加载时有一些内容。因此,当通过“后退”按钮加载页面时,在使用正确的历史感知数据更新页面之前,初始内容会显示得非常短暂

为了克服这个问题,我打算在初始页面加载时隐藏updatepanel(display:none),然后在没有任何历史记录的情况下显示它。问题是我不知道要检查什么来确定是否有历史记录。我可以看到Sys.Application有一个_history成员,但当我在page init上检查它时,每次都是null


有人知道我应该检查什么来确定页面加载客户端是否有历史记录要处理吗?在什么时候做呢?

浏览器的后退按钮及其提供的功能完全独立于网页内容

您可以做的一件事是在进行AJAX更新时设置位置哈希。在加载页面时,您可能会检测到这种情况。我还没试过。您应该能够在服务器端解析出url的#部分,并查看您在AJAX历史记录中的位置

location.hash = 'foo';

谢谢你的回复,丹尼尔。我现在在更新面板周围有一个div,它的display属性设置为none。在Sys.Application的init事件中,我正在检查window.location.hash值,以确定页面加载是否是浏览器后退/前进按钮单击的结果。如果不是,则将display属性设置为block,如果不是,则暂时将其保留为“display:none”

在ScriptManager导航事件处理程序的服务器端,单击“后退”按钮后会调用该事件处理程序。我正在注册一个客户端脚本块,该脚本块将显示属性设置为“块”


我已经做了一些测试,似乎工作得很好,我不再得到闪烁。我更愿意使用一个MS AJAX客户端对象来检查历史记录,但我们已经做到了。

在页面中输入一个空白值,然后在页面加载时设置其值。您会发现,当使用“后退”按钮时,页面加载脚本将发现该值仍处于设置状态,您可以相应地做出响应。这利用了浏览器功能,在页面加载之间保留表单内容。

这是最好的方法:在页面加载(onBody)上设置显示:无。你应该用评论来回应回答的人,或者根据其他人的问题或反馈编辑你的原始问题,并提供更多细节。请不要将讨论作为个人答案发布,除非它是您问题的实际答案(您自己解决了)