代码之家  ›  专栏  ›  技术社区  ›  Russell

ASP.NET附件,然后刷新页面

  •  3
  • Russell  · 技术社区  · 15 年前

    我正在使用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();
    

    这可以按预期工作,但是我希望它也用更新的列表刷新页面。

    我遇到了麻烦,因为单个请求/响应正在返回报告。

    还有刷新页面的方法吗?

    虽然有正确的回答,但请随意提供详细说明其他解决方案/想法的答案。

    2 回复  |  直到 11 年前
        1
  •  9
  •   Rex M    15 年前

    不幸的是,你目前的方法是一个死胡同。HTTP的性质是单请求、单响应。一个响应只能有一个代码:“好的,这是一些数据,请下载。”“改为转到这里”是一个不同的代码。你描述的是更复杂的东西——一系列指令。首先是“这是一个文件”,然后是“重定向到另一个资源”。这项工作的意义应该是一个线索——浏览器什么时候应该重定向?当用户选择保存文件的位置时?文件下载完成后?

    要执行您描述的操作,您可以让JavaScript在新窗口中打开PDF,并重新加载当前窗口。

        2
  •  -1
  •   CoffeeRain hugo24    11 年前

    试用使用 response.redirect(request.url.tostring) 在你之后 context.Response.Flush();