重定向到“谢谢”页面并立即提供下载文件的保存对话框
我使用的是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中,单击按钮,如何打开下载对话框,然后将用户重定向到另一个页面?
- 如何在Web应用程序中显示错误消息框asp.net c#
- 我可以在.NET Web应用程序中使用Braintree.js吗?
- Linq表达式来过滤formcollection
- 如何减少gridview列中的小数位数asp.net C#
- 如何在asp .net C#登录和注册memberprofile页面中创建会话
- .net dropDownList在IE中回发后丢失值
- EntityFramework包版本=“6.1.3”和Web配置版本6.0.0.0?
- AssemblyResolve不会触发
- ASP.Net Identity 2 – 来自OAuthAuthorizationServerProvider的自定义响应