Asp.net 如何在不离开当前页面的情况下启动文件下载?
如何使用ASP.NET页面的ViewState中的数据强制下载该页面上的文件?我发现一些例子表明: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
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等)而不丢失当前页面?