我正在使用ASP .net。
开发一个c#项目我有一个报告列表,每个报告都有一个超链接,它们调用Web服务器进行检索 PDF然后返回PDF以供用户保存或打开:
ASPX页面:
<table>
<tr>
<td>
<a href="#" onclick="SubmitFormToOpenReport();">Open Report 1</a>
<td>
</tr>
...
</table>
ASP.Net:
context.Response.Clear();
context.Response.AddHeader("content-disposition", "attachment;filename=report.pdf");
context.Response.Charset = "";
context.Response.ContentType = "application/pdf";
context.Response.BinaryWrite(myReport);
context.Response.Flush();
这可以按预期工作,但我希望它也刷新页面更新列表。
我遇到麻烦,因为单个请求/响应正在返回报告。
还有办法刷新页面吗?
虽然有正确的回复,但请随意添加详细说明替代解决方案/想法的答案。
答案 0 :(得分:9)
不幸的是,你目前的方法是死路一条。 HTTP的本质是单个请求,单个响应。响应只能有一个代码 - “好的,这是一些数据,请下载它”。 “转而去”是一个不同的代码。你描述的东西要复杂得多 - 一系列指令。首先“这是一个文件”,然后“将自己重定向到另一个资源”。使这项工作的意义应该是一个线索 - 浏览器应该何时重定向?当用户选择保存文件的位置时?文件下载完成后?
要执行您所描述的内容,您可以让JavaScript在新窗口中打开PDF并重新加载当前窗口。
答案 1 :(得分:-1)
尝试在response.redirect(request.url.tostring)
context.Response.Flush();