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

时间:2012-02-21 20:50:10

标签: asp.net vb.net web-services .net-4.0

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

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

然后我尝试使用单独的线程来使用Web服务。这会加快进程并且不会冻结gif,但在Web服务完成时页面不会更新。如果我让主线程处于休眠状态,页面会更新,但我回到上面提到的同一个问题,即gif冻结了。

我很确定我可以使用javascript进行调用并以这种方式更新页面,但此时,我真的宁愿做服务器端(出于顽固性,如果没别的话)。

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

2 个答案:

答案 0 :(得分:1)

这也发生在我身上。我已设法通过将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>

答案 1 :(得分:0)

上传文件控件不适用于更新面板,所以我的猜测是你正在运行一个完整的回发,这就是图像停止旋转的原因。如果您没有使用更新面板(或其他一些Ajax平台),那么您几乎肯定会回复。

尽管与JQuery异步启动并不太难。查看this link以获取示例。