Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何在不离开当前页面的情况下启动文件下载?_Asp.net_Download_Viewstate - Fatal编程技术网

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

Asp.net 如何在不离开当前页面的情况下启动文件下载?,asp.net,download,viewstate,Asp.net,Download,Viewstate,如何使用ASP.NET页面的ViewState中的数据强制下载该页面上的文件?我发现一些例子表明: Response.ClearContent(); Response.ContentType = "text/plain"; Response.AddHeader("Content-Disposition", "attachment; filename=" + "example.aaa"); Response.Write( this.ViewState["stuffs"] ); Response.E

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

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数据


关键是,如何创建文件、启动下载并不丢失当前页面状态?

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

经过更多测试,我找到了解决方案

如果我删除
Response.ClearContent()根据示例代码,它将完全按照我的需要工作:

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

URL的安全性问题并不重要,因为此表单仅由登录用户访问。我不知道CrystalReports是否适合我的场景,因为在单击“完成”按钮之前,数据库中不会保存任何内容。当然可以,但是一个登录用户可以使用URL/Querystring并显示另一个登录用户的结果吗?我不这么认为。。数据来自ViewState。它对于每个用户和每个页面都是唯一的。是的,但我建议您在提交应用程序时生成PDF文档。这将确保您有一个“及时快照”版本的应用程序。好的,但问题恰恰是。。。如何创建文件(pdf、.txt等)而不丢失当前页面?