0

我有一个页面,允许用户输入搜索条件,然后显示匹配的记录。它还有一个下载按钮,使用户能够下载匹配的记录。

我如何对其进行编码,以便在下载数据之前单击“下载”将首先刷新记录显示?

这是我用于下载的代码:

Response.ClearContent();
Response.ClearHeaders();

using (MemoryStream outputStream = new MemoryStream())
{
    // some details elided...
    outputStream.Write(documentData, 0, documentData.Count());

    string fileName = GenerateFileName();

    Response.AppendHeader("content-disposition", String.Format("attachment; filename={0}", fileName));
    outputStream.Flush();
    outputStream.WriteTo(Response.OutputStream);
}
Response.Flush();
Response.Close();
4

2 回答 2

1

您只能将一个响应发送回浏览器,然后更新数据,然后发送新标头以开始下载。

要使它们都成为可能,您可能需要使用一些 javascript 和/或 ajax 调用来更改您的步骤。

HTTP 协议的工作原理:http ://www.w3.org/Protocols/rfc2616/rfc2616-sec1.html

于 2012-06-25T10:44:34.850 回答
0

构造一个 javascript 方法,首先通过 AJAX 更新页面,然后继续发出非 AJAX 请求以下载文件。正如 Aristos 所说,这不能在一个请求中完成。一种不同的解决方案可能是先下载文件(非 ajax),然后在没有 ajax 的情况下刷新页面。通常,在发出新的非 ajax 请求后,javascript 代码无法正确执行,但如果它只下载文件,我认为代码可能会继续执行以发布下一个请求。

于 2012-06-25T10:50:23.470 回答