如何在不离开当前页面的情况下启动文件下载?

时间:2011-03-02 18:44:07

标签: asp.net download viewstate

如何使用该页面的ViewState中的数据强制下载ASP.NET页面上的文件?我找到了一些例子表明:

Response.ClearContent();
Response.ContentType = "text/plain";
Response.AddHeader("Content-Disposition", "attachment; filename=" + "example.aaa");
Response.Write( this.ViewState["stuffs"] );
Response.End();

但如果我这样做,当前页面将被删除并返回给用户空白。

其他示例说创建“download.aspx”并通过javascript请求它,但在这个新页面上,我将无法访问第一页的ViewState数据。

重点是,如何创建文件,启动下载并且不会丢失当前页面状态?

2 个答案:

答案 0 :(得分:0)

经过多次测试后,我找到了解决方案。

如果我从示例代码中删除Response.ClearContent();,它将完全按照我的需要运行:

  • 使用实际页面数据创建新文件
  • 启动此文件的下载
  • 保留实际页面完整

答案 1 :(得分:-1)

我通常使用Crystal Reports并生成PDF文件来处理此问题。我使用提交的数据保存对该文件的引用,并在请求时提供它。您需要保护文件,以便随机URL黑客无法偶然发现它。