为什么页面在浏览器中重新加载时会闪烁?

Zhi Lv - MSFT 32,446 信誉分 Microsoft 供应商
2024-03-07T02:30:33.5066667+00:00

我有一些在线商店的 HTML5 代码。每当我单击链接来更改产品库存并显示不同的产品线时,它都会使用模态,并且仅重新绘制浏览器中产品的部分页面。

但是,当我用 ASP.NET 代码(asp-controller、asp-action 等)替换模态并单击链接以刷新产品时,浏览器会闪烁并一直滚动到顶部。这对我来说看起来不太好。

它为什么要这样做?这是默认行为吗?

我可以让它停止重新绘制整个浏览器页面吗?

注意: 此问题总结整理于:Why does browser page flicker on reload? - Microsoft Q&A

ASP.NET Core
ASP.NET Core
.NET Framework 中一套用于生成 Web 应用程序和 XML Web 服务的技术。
32 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. XuDong Peng-MSFT 10,746 信誉分 Microsoft 供应商
    2024-03-08T02:07:09.7366667+00:00

    你好,

    您遇到的问题涉及 HTML5 和 ASP.NET 中的不同行为方式。使用 HTML5 和 Modal 时,页面内容会通过异步请求进行更新。这允许您部分刷新页面内容,而不会导致整个页面重新加载或滚动。

    当您转换为 ASP.NET 代码时,尤其是在使用 asp-controller 和 asp-action 属性时,您可能不再使用异步请求。ASP.NET MVC 的这些属性通常用于生成指向服务器端操作的链接。当用户单击此类链接时,默认行为是向服务器发送一个全新的请求并加载一个全新的页面。这就是页面闪烁并回滚到顶部的原因。

    若要解决此问题,可以使用 1) AJAX 来处理这些链接的单击事件。这样,您可以请求必要的数据并仅更新页面的一部分,而不是整个页面。2) 使用可通过 AJAX 加载并插入到现有页面中的 ASP.NET MVC 分部视图。3) 使用 JavaScript 或 jQuery 阻止链接单击事件中的默认行为,然后手动处理该事件(例如通过 AJAX 调用)。


    如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。

    注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。