首页 > 解决方案 > 执行 C# 代码并注册 JavaScript 启动脚本时,如何停止页面刷新?

问题描述

我有一个在 c# 中执行代码的按钮。后面的代码从数据库中获取一些信息并编写一段相当长的 JavaScript,然后注册并在客户端上运行。后面的代码如下所示:

protected void Button1_Click(object sender, EventArgs e)
{
   System.Text.StringBuilder sb = new System.Text.StringBuilder();
   sb.Append(@"
        <script language='javascript'>
        //Lots of JavaScript
       </script>");
   System.Web.UI.ScriptManager.RegisterStartupScript(this, this.GetType(), "JCall1", sb.ToString(), false);
}

该代码可以正常工作并执行应有的操作。问题是在按下按钮和执行 JavaScript 之间,我得到了一个页面重新加载 Flash。我想停止那个闪光。我可以说它发生在 JavaScript 执行之前,因为我在 JavaScript 中做的第一件事就是启动一个处理图标。它在解决/处理一些承诺时旋转。闪烁发生在图标开始处理之前。一旦 JavaScript 启动(图标出现并旋转),一切都很好。这可能是我在此按钮的生命周期中不了解的内容。我推测当我 RegisterStartupScript 时,页面正在刷新以加载新脚本。我无法在 JavaScript 客户端中完成所有操作,因为需要将内部数据提供给 API。是的,如果网站是 . Net Core 和我可以在 Razor 页面中完成所有操作,但这不是我要处理的。它是网络表单。我可能对此无能为力,但如果有的话,我可以寻求帮助。

标签: javascriptc#

解决方案


我认为您正在寻找的是按钮单击以异步执行。这篇其他 SO 帖子应该可以帮助您根据需要制作它:Calling async method on button click


推荐阅读