在长时间的操作中向用户提供反馈

时间:2009-10-28 09:18:08

标签: asp.net ajax

我在ASP.NET中开发了一个Web应用程序,用户可以完成的任务之一是一项长期任务。基本上,此任务将收集数据库中的所有数据并将其转换为特定的XML格式。然后,该XML再次作为数据的“快照”存储在数据库中。 (因此,它不会将XML返回给用户。)

不幸的是,此任务需要几分钟才能完成。这不是一个真正的问题,除非用户可能会变得不耐烦,并且可能只是因为似乎没有发生任何事情而尝试制作第二个甚至第三个快照。

因此,我需要一种简单的方法来向用户提供简单的反馈,通知他当前的操作,以便他知道应用程序正在执行某些操作。 “快照”构建器已包含一个事件,该事件将生成有关其当前操作的消息,因此我需要做的就是找到一种方法将此事件连接到向用户提供实时反馈的方式。

不幸的是,我不能使用第三方组件,只能使用属于VS2008的东西。 (管理层非常担心第三方代码可能存在许可问题。)所以我必须自己在Ajax中写一些东西。

我是一位非常有经验的程序员。尽管如此,这将是我的第一个Ajax项目,所以我需要清楚地解释它的工作原理。那么,我如何以简单易懂的步骤向用户提供这样的反馈呢?

2 个答案:

答案 0 :(得分:2)

要对此请求使用AJAX,您应该查看UpdateProgress control,并在初始化长时间运行过程的页面上将AssociatedUpdatePanelID设置为UpdatePanel的ID 。

Here是使用UpdatePanel

的一个很好的例子

Here是一个Visual Studio解决方案,演示如何一起使用UpdateProgress和UpdatePanel

我曾经在AJAX可用之前在一个项目中遇到类似的问题,我使用BusyBox解决了它,结果在我的应用程序中运行得非常好。

答案 1 :(得分:2)

好吧,既然你是新手,我就不会让你努力学习更高效的高级方法,但你可以在asp.net ajax库中使用UpdateProgress。当ajax在后台UpdateProgress做某事时,会显示一条自定义消息,通知用户该页面正在执行某些操作。

因此,您基本上可以使用UpdatePanel在您的asp.net页面启用ajax,并UpdateProgress向用户显示进度。

您可以在视频格式中找到更多信息:http://www.asp.net/learn/ajax-videos/

但是如果你想以不同的方式学习:

我不建议您使用Microsoft方法在​​asp.net页面中启用Ajax,而是可以在页面中使用jQuery ajax和Web服务来提供更高效,更快速的页面。

更多: jQuery Ajax Library

Microsoft Visual Studio为jQuery提供Intellisense,因此现在在JQuery中编写代码变得更加容易。

P.s:我建议你完全免费和开源。