执行web服务时在ASP.NET页面中显示动画GIF



我在这个网站和MSDN上读了很多文章,但找不到我想要的解决方案。我的情况是:我有一个页面,允许用户"上传"文件。该页面包含一个asp.net fileUpload控件。然而,它所做的只是将字节数组发送到WSE 2.0 web服务。我无法改变这一点。这可能会在未来更新,但就目前而言,这是我必须遵循的。

该页面有一个动画gif,当用户单击提交按钮时,该gif就会启动。并且应该根据web服务调用返回的结果相应地更新页面。我能够成功地启动gif并使用WS。但是,当页面访问web服务时,gif文件会冻结。

然后我尝试使用一个单独的线程来使用web服务。这加快了处理速度,不会冻结gif,但当web服务完成时,页面不会更新。如果我让主线程进入睡眠状态,页面会更新,但我会回到上面提到的问题,gif会冻结。

我很确定我可以使用javascript进行调用并以这种方式更新页面,但在这一点上,我真的更愿意在服务器端进行调用(如果没有其他事情的话,那就是出于固执)。

有人能给我指正确的方向吗?提前谢谢。

我也遇到过这种情况。我已经设法解决了这个问题,将img标记封装在div中,并使用setTimeout函数通过JavaScript显示/隐藏div。GIF不会以这种方式冻结。

示例:

<script type="text/javascript">
    function showLoadingIco() {
        setTimeout(showLoadingGif, 50);
    }
    function showLoadingGif() {
        // Using jQuery
        $('#myDiv').css('display', 'inline');
    } 
</script>

请注意,您的HTML代码必须如下所示:

<div id="myDiv" style="display:none">
    <img src="loading.gif" alt="Loading..." />
</div>

Upload File控件与Update Panels不能很好地配合使用,所以我猜测您正在遇到完全回发,这就是图像停止旋转的原因。如果您没有使用更新面板(或其他Ajax平台),那么您几乎肯定会收到一篇文章。

不过,与JQuery异步实现并不太困难。查看此链接以获取示例。

最新更新