这可能是一件非常简单的事情。基本上,用户点击一个按钮并发生潜在的长时间运行的任务。我想做一些事情,例如切换按钮的启用状态,显示微调等。在VB.NET Winforms中,我只是执行Application.DoEvents()并且更新将会发生并且代码可以继续。我怎样才能在ASP.NET中做到这一点? (最好的服务器端或最小的JavaScript)长期提交ASP.NET反馈
回答
有几种方法可以在ASP.Net中实现,具体取决于您的要求。启动流程相当简单,但要从客户端完成监控,需要在服务器和客户端进行更多的工作。
解决方案的基本轮廓是:
1)启动一个动作在客户端上执行一些动作。例如,您可以将整个页面重新发布到单击按钮上,发起ajax请求,或者进行部分页面回发,具体取决于您需要从页面获取多少信息。
2)在服务器端,使用BackgroundWorker启动任务,在工作流队列中创建一个条目,或将请求存储在由负责执行操作的服务监视的数据库表中。
3)回到客户端,使用javascript启动一个window.timeout循环,当它超时时,向web服务器发出一个ajax请求来检查完成情况。使用像这样的超时循环将确保UI保持响应,并且所显示的任何动画都将正确显示。你如何检查完成将取决于你的服务器端实现是如何设计的,但几乎肯定会需要一个数据库。
我们用下面的一般方法用于启动从web客户端,它可以是长期运行报告:
当用户发起的报告,使用JavaScript打开一个新窗口,以报告生成页面在客户端上,传递足够多的参数来启动它。打开一个单独的窗口允许用户继续工作,但仍然看到发生了一些事情。
报表页面的用户界面基本上包含一个动画GIF,以便用户知道正在发生的事情。
当报告页面最初加载到服务器上时,它会生成一个唯一的ID用于监视报告的状态并将其嵌入到JavaScript中以用于监视状态。然后它将此唯一标识符存储在包含唯一标识和状态列的数据库表中,初始化要请求的状态。
数据库条目一旦建立,页面就会触发BackgroundWorker以启动操作,然后将页面返回给用户。
当页面显示时,javascript会启动一个window.timeout循环,该循环周期性地向Web服务器发出ajax请求,然后使用先前创建的唯一标识符检查数据库中的报告状态。
当backgroundworker成功完成报告或失败时,它会使用状态,报告位置或错误消息更新数据库表并终止。
当javascript循环发现报告生成已完成时,它会向用户显示错误消息或报告。
希望这可以为您解决问题提供一些建议。
与此问题可能是,一旦页面发布,你不能更新页面的其他部分。 您可以使用多个asp:updatepanel并与其他更新面板通信,从而导致面板中的状态发生更改。 看看这个链接:
http://www.ajaxtutorials.com/ajax-tutorials/tutorials-using-multiple-updatepanels-in-net-3-5-and-vb/
它会告诉你如何做到这一点。
- 1. 提交已完成的反馈活动
- 2. ASP.net反馈表格
- 3. 反馈表与asp.net代码
- 4. 用户点击提交后提供反馈
- 5. TestFlight提供反馈按钮
- 6. 在长时间的动作中向用户提供反馈
- 7. Sentry Report对话框的用户反馈不提交
- 8. 将用户反馈数据提交给Elasticsearch
- 9. 用户(很像反馈页)ASP.Net C#
- 10. ASP.Net的最佳“加载”反馈?
- 11. 试图提出反馈页面
- 12. 如何向Appcelerator提供反馈?
- 13. mgwt/gwtphonegap建议,反馈信息,提示
- 14. 提供反馈以查看控制器
- 15. ItemizedOverlay反馈
- 16. 正面反馈
- 17. Winforms UI反馈
- 18. 类图反馈
- 19. 建筑反馈
- 20. 长时间提交
- 21. 需要一个带有用户反馈的ASP.NET MVC长时间运行过程
- 22. wp7触觉反馈
- 23. 与AjaxRequestTarget但反馈
- 24. OpenGL:纹理反馈?
- 25. PHP客户反馈
- 26. APNS反馈服务
- 27. BEM结构反馈
- 28. jQuery插件反馈
- 29. 查看反馈onTouch
- 30. Regardin反馈面板