【问题标题】:Keep scroll position after Postback - 2019回发后保持滚动位置 - 2019
【发布时间】:2019-08-03 00:38:12
【问题描述】:

在我暴露我的问题之前,让我解释一下为什么在所有其他问题都得到回答之后,我再次问这个问题。

简答:

这些都不适合我。

长答案:

我一直在搜索这个主题,已经有 1 年多了,但仍然没有解决这个问题。

  • 我已经尝试过 javascript “解决方案”,其中有很多,真的没有 工作过;
  • 我尝试了MaintainScrollPositionOnPostback="true" 指令, 在MasterpageWebconfig 中;
  • 我也尝试过Page.SmartNavigation(已过时), 又一无所获;
  • 我尝试了无数“解决方案”,但无济于事;

我在每个Contentpage 中都使用MasterpageUpdatePanels

所以无法解决这个问题开始变得烦人。

我在某处读到 MaintainScrollPositionOnPostback 属性不再适用于任何浏览器,但我可能读错了。

感谢您的帮助 :)!

最好的问候!

【问题讨论】:

  • 自从我从 webforms 迁移到 mvc 以来,我已经很久没有检查过这个了。我明天会检查并回复您。
  • @GaganDeep 我非常感谢你的努力!
  • 嘿@Tiago,你的回发元素是在更新面板里面还是外面?
  • @GaganDeep 再次嗨!是的,每个 Postback 都在 UpdatePanel 中。
  • 我试过了。我的页面顶部有很多空白空间来启用滚动,底部有一个按钮,当我点击按钮时,它会创建一个回发到服务器,但页面的滚动位置保持不变。也因为这是一个异步回发页面滚动位置应该保持原样,因为页面没有重新加载。我在 Chrome 版本 72.0.3626.121 和 IE 11 都试过这个。

标签: asp.net vb.net postback maintainscrollpositionon


【解决方案1】:

供日后参考。

我的问题在于代码本身,使用 Control.Focus() "conflits" 和滚动位置。

正如@GaganDeep 所解释的那样,不能同时使用 Control.Focus()MaintainScrollPositionOnPostback="true",因为 Focus() 滚动页面到被引用控件的位置。

感谢您的帮助!我真的很纠结这个,从没想过它会是这么“简单”的东西。

【讨论】: