Javascript?
元标记刷新?
Response.Redirect(到自己)
Server.Transfer(给自己)
Ajax 更新面板?
Javascript?
元标记刷新?
Response.Redirect(到自己)
Server.Transfer(给自己)
Ajax 更新面板?
让我们看看选项:
Javascript?
只要用户没有禁用它,它就可以正常工作。
元标记刷新?
支持 Javascript 方法的已弃用方法。但是,如果用户禁用了 Javascript,您可以将其用作备份。
Response.Redirect(到自己)
这不起作用,因为浏览器在重定向时不会显示对用户有用的任何内容。此外,浏览器将在一定数量的重定向后停止请求,以保护用户免受无限重定向。
Server.Transfer(给自己)
也不起作用,因为服务器上的代码只会循环而不向浏览器发送任何内容。效果与代码中只有一个循环相同。
Ajax 更新面板?
工作正常,只要用户没有禁用 Javascript。它与第一个选项基本相同,只是 Javascript 自己执行请求,而不是让浏览器执行请求。
如果您可以向用户报告任何类型的进度,我倾向于使用 asxh 和永久框架的变体来运行。添加一点jQuery UI Dialog和jQuery UI Progress Bar,当你在服务器上做繁重的工作时,你就有了一种吸引用户注意力的闪亮方式。
我在874204给出了一些示例代码来演示该技术。
如果您无法为用户提供进度,我倾向于仍然使用 UI 对话框并弹出一条“请稍候,正在处理...”消息,并带有一个 web 两点哦兼容的 spinny gif。
查看这篇关于异步页面的文章。这里还有一个来自CodeProject的示例,其中包括异步页面和 META-REFRESH。
您可以在 Beer House Starter Kit- http://www.asp.net/Downloads/starter-kits/the-beer-house/中找到此类功能的示例实现。
SendingNewsLetter.aspx 和 SendNewsLetter.aspx 页面将对您有用。不过,这可能对您的需要有点过分——它甚至显示了长时间运行的操作的进度。
我建议使用 Ajax 并显示一个 UpdateProgress,这样用户就知道它仍在流失。