重定向到“谢谢”页面并立即提供下载文件的保存对话框

我使用的是ASP.NET2.0。 我创建了一个包含一些输入字段和下载按钮的下载表单。 单击下载按钮时,我想将用户重定向到“感谢您下载…”页面并立即向他/她提供要保存的文件。

我有以下代码来显示savefile对话框:

public partial class ThankYouPage : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Response.Clear(); Response.AddHeader("Content-Disposition", "attachment; filename=\"downloadedFile.zip\""); Response.ContentType = "application/x-zip-compressed"; Response.BinaryWrite(this.downloadedFileByteArray); Response.Flush(); Response.End(); } } 

显然,此代码不允许显示任何“谢谢”消息。 是否有“AfterRender”事件或类似的页面,我可以移动此下载代码并为页面提供向用户呈现“谢谢”消息的机会? 毕竟,我真的很感谢他们,所以我想表达这一点。

您可以使用IFrame从感谢页面引用下载页面

  

在这种情况下,DownloadFile.aspx将从您的示例中获取代码。

在感谢页面的头部使用META REFRESH标签:

  

或者,您可以使用body onLoad函数将下载URL替换为当前位置。

  

在这种情况下,重定向将当前页面加载完成开始并且仅在客户端启用了JavaScript时才开始,因此请记住包含带有下载链接的链接(“如果您的下载没有在几秒内启动……”等等)。

您也可以使用Phil建议的IFRAME,甚至是FRAME或完整的弹出窗口(可以阻止,请注意)。 你的旅费可能会改变。

您编写的代码实际上应该从“谢谢”页面重定向到(使其成为第二个重定向)。 由于您已将内容处置设置为附件,因此该页面实际上不会替换现有的“谢谢”页面。

如果你想提供一个“谢谢”页面和客户端必须调用两次服务器的文件。 因此,您可以创建用于显示消息的thankyou.aspx页面(也可以直接下载链接到该文件)。 您可以使用元标记开始下载,也可以只使用js(即使ms为其下载页面执行相同操作)。

然后,为了服务该文件,您可以创建一个直接链接,以避免在服务器上运行另一个页面; 否则你应该创建一个HttpHandler来隐藏filesys。

应使用Response.TrasmitFile将文件发送到客户端

请检查以下链接,这可以帮助您解决问题。

在Asp.net中,单击按钮,如何打开下载对话框,然后将用户重定向到另一个页面?