在长时间运行的操作完成之前,保持ASP.NET页面的最佳方法是什么?

时间:2009-05-23 17:14:35

标签: asp.net javascript ajax refresh long-running-processes

的Javascript?

Metatag刷新?

Response.Redirect(to self)

Server.Transfer(to self)

Ajax更新面板?

6 个答案:

答案 0 :(得分:3)

让我们看一下选项:

  

的Javascript?

只要用户没有禁用它,它就能正常工作。

  

Metatag刷新?

赞成使用Javascript方法的弃用方法。但是,如果用户已禁用Javascript,您可以将其用作备份。

  

Response.Redirect(to self)

这不起作用,因为浏览器在重定向时不会显示对用户有用的任何内容。此外,浏览器将在一定数量的重定向后停止请求,以保护用户免受无限重定向。

  

Server.Transfer(to self)

也不起作用,因为服务器上的代码只是循环而不向浏览器发送任何内容。效果与代码中的循环相同。

  

Ajax更新面板?

工作正常,只要用户没有禁用Javascript。它与第一个选项基本相同,只有Javascript执行请求本身而不是让浏览器执行请求。

答案 1 :(得分:3)

如果您可以向用户报告任何类型的进度,我倾向于使用asxh和forever frame的变体运行。添加一点jQuery UI DialogjQuery UI Progress Bar,您就可以在服务器上进行繁重的工作时保持用户注意力。

我在874204提供了一些示例代码来演示该技术。

如果你无法向用户提供进展,我倾向于仍然使用UI对话框并弹出一个“请等待,处理...”消息,带有一个网络两点哦兼容的spinny gif。

答案 2 :(得分:2)

查看Asynchronous Pages上的这篇文章。这里还有一个来自CodeProject的例子,其中包括异步页面和META-REFRESH。

答案 3 :(得分:1)

您可以在Beer House入门套件http://www.asp.net/Downloads/starter-kits/the-beer-house/中找到此类功能的示例实现。

SendingNewsLetter.aspx和SendNewsLetter.aspx这两个页面对您有用。这可能对你的需求来说太过分了 - 它甚至显示了长时间运行的进展。

答案 4 :(得分:1)

使用AJAX WebModalAnchor弹出带取消按钮的窗口怎么样?

希望这有帮助,

比尔

答案 5 :(得分:0)

我建议使用Ajax并显示UpdateProgress,以便用户知道它仍在流失。