2011-03-15 34 views
0

我有一个带有文本状态的ASP.NET页面和一个导出Excel文件的按钮。当用户点击按钮时,我想立即生成文件并将其作为二进制流返回给客户端。然后我想更改文本状态以显示成功/失败。发送二进制流到浏览器,然后更新页面

到目前为止,我可以生成并发送文件没有问题,但显然状态不会显示,因为服务器响应用于发送文件而不是新的状态更新页面。

我不知道最简单的方法是什么。我能想到的东西,但它是最好的方式:

  • 用户单击按钮。
  • 文件生成并保存为会话中的流。
  • 更新状态并将包含新状态的页面返回给客户端。
  • 页面上的一段Javascript会打开一个第三方页面,它从会话中检索保存的流。

您怎么看?我觉得MacGyver-ish。

谢谢。

回答

0

反过来做。让按钮的请求以正常响应的形式发送文件,然后在另一个连接的后台拉取会话的状态。如果您使用AJAX,则可以通过其DOM,UpdatePanel等动态更新现有页面。否则,打开一个单独的窗口,请求状态页面并运行定时器以定期刷新页面。

+0

如果我将该文件作为按钮点击的正常响应发送,是否可以使用服务器端代码中的AJAX请求客户端页面重新加载自身?我不熟悉AJAX,但有没有这样的功能? – md1337 2011-03-16 15:47:59

+0

否。AJAX是客户端代码,它使用单独的连接向服务器发送请求。如果您有服务器发送二进制文件回复用户的请求,则现有页面不会更改,因此可以根据需要继续运行其客户端脚本。如果启用AJAX,页面可以使用定时器发送状态请求。否则,请打开一个新窗口,然后使用刷新计时器。 – 2011-03-16 23:26:06

相关问题