我有一个ASP.NET页面,它使用ASP.NET控件从用户收集一些条件,然后根据控件的值,使用HttpContext.Current.Response从网页生成CSV输出。
我遇到的问题是,我的回复可能需要一分钟左右才能生成。因此,我想在用户提交请求之前实现某种进度条,直到CSV交付为止。不幸的是,我似乎无法在ScriptManager中将EnablePartialRendering设置为false时按需显示和隐藏隐藏的div(这对于填充页面上的其他控件是必要的)。
有没有办法实现进度条(服务器或客户端)来监控HttpContext输出的状态?
答案 0 :(得分:0)
UpdateProgress
课程不是进度条。它的目的是提供部分回发发生的反馈,而不是向浏览器传达该部分回发的实际进度
我最喜欢的JavaScriptish(支持所有主要插件)库可以做你要问的是Plupload:
可以看到here的例子。
答案 1 :(得分:0)
没有。至少不是你的想法。如果您要将文件发送回用户,则不能事先向用户发出任何HTML。您必须将文件作为独立响应发送。
您可以做的是许多其他网站所做的事情,即在后台执行该过程,并将用户重定向到具有动画的页面以指示正在发生的事情。您使用Javascript使页面每隔几秒刷新一次,直到后台进程完成,然后返回文件。
这使过程变得复杂,并且需要更多的工作。你要问的问题是,这个进步真的值得吗?
编辑:
没有注意到您使用的是Ajax,在这种情况下,您可以在页面上通常隐藏动画,然后在执行该过程时取消隐藏动画并让它旋转。这不能显示实际的进展,但它确实表明某些事情正在发生。完成此过程后,再次隐藏动画,然后发送文件。
如果您打算使用javascript进行下载,您还有其他一些选项......但这些都与下载前准备工作的进度无关。
答案 2 :(得分:0)
如果你正在使用ajax,这是最好的方法
$('#loadinganimation')
.hide() // hide it initially
.ajaxStart(function() {
$(this).show();
})
.ajaxStop(function() {
$(this).hide();
});