C# 在函数完成时显示加载动画

C# 在函数完成时显示加载动画,c#,javascript,asp.net,C#,Javascript,Asp.net,我的.aspx.cs代码中有一个函数,它需要很长时间才能完成处理,直到我想显示一个很酷的加载动画。我查看了之前的一些帖子,但要么这些帖子对我不起作用,要么是针对页面加载场景的解决方案在函数完成时没有加载 我想正确的方法是在主函数启动之前启动一个Javascript startLoader函数,这需要很长时间,然后在函数结束时从.aspx.cs本身调用一个stopLoader来停止加载程序。如何实现这一点有什么建议吗?如果你真的想这样做,那么唯一的方法就是webworkers。您可能听说过它们,或

我的.aspx.cs代码中有一个函数,它需要很长时间才能完成处理,直到我想显示一个很酷的加载动画。我查看了之前的一些帖子,但要么这些帖子对我不起作用,要么是针对页面加载场景的解决方案在函数完成时没有加载


我想正确的方法是在主函数启动之前启动一个Javascript startLoader函数,这需要很长时间,然后在函数结束时从.aspx.cs本身调用一个stopLoader来停止加载程序。如何实现这一点有什么建议吗?

如果你真的想这样做,那么唯一的方法就是webworkers。您可能听说过它们,或者如果没有听说过,我郑重建议您去看看。

是的,在客户端单击按钮或任何您用来触发服务器端事件并在流程结束时从服务器端调用stopLoader的元素时触发startLoader。大概是这样的:

//rest of the server-side code above ...
Page.ClientScript.RegisterStartupScript(this.GetType(), "someKey", "stopLoader();", true);

如果您不介意浏览器在此期间没有响应,最简单的方法是使用动画gif:

诀窍是在开始处理时显示图像,完成后隐藏图像。您可以在img中显示它,并使用jQuery或任何您想要显示/隐藏它的东西


如果您需要浏览器保持响应,请使用Web Workers。但是请注意,一些旧的浏览器不支持它

是的,我是在ASP.NET Web中完成这项工作的,它不是ASP.NET MVC解决方案。您需要提供OnSubmit客户端事件处理程序。它基本上分为三个部分:Javascript、HTML Div和一行代码:

脚本:

    function ShowLoading(e) {
        // var divBg = document.createElement('div');
        var divBg = document.getElementById('blockScreen');
        var divLoad = document.createElement('div');
        var img = document.createElement('img');

        img.src = 'images/ajax-loader.gif';
        divLoad.setAttribute("class", "blockScreenLoader");
        divLoad.appendChild(img);

        divBg.appendChild(divLoad);

        document.getElementById('blockScreen').style.display = 'block';

        // These 2 lines cancel form submission, so only use if needed.
        //window.event.cancelBubble= true;
        //e.stopPropagation();
    }

    function HideLoading() {
        //alert('hideloading');
        document.getElementById("form1").onsubmit = null;
        document.getElementById('blockScreen').style.display = 'none';
        //alert('done');
    }
添加以下DIV

 <div id="blockScreen" class="blockScreen" style="display:none">&nbsp;</div>
现在,所有页面回发本质上都必须调用onsubmit事件。它将在页面回发完成之前显示动画

 Page.ClientScript.RegisterOnSubmitStatement(this.GetType(), "submit", "ShowLoading()");