我有一个ASP.NET应用程序,在一个点上生成一个PDF文件,并加载下一页。我可以用两个单独的按钮很容易做到这一点,但当我试图用一个按钮来做到这一点时,就会变得困难得多。
当这两个按钮都被同一个按钮触发时,PDF将会下载,但页面将不会加载。我甚至让线程在文件传输后休眠,但它会等待,但随后就会停止。
我附上了我一直在尝试的代码:
Response.ContentType = "application/pdf";
Response.AppendHeader("Content-Disposition", "attachment; filename=labels.pdf");
Response.TransmitFile(Server.MapPath("~/"+randomNumber.ToString()+".pdf"));
Server.Transfer("~/createshipment.aspx", true);发布于 2011-12-31 03:38:27
您不能从服务器获得两个不同的响应,但您正在尝试这样做。
首先,你想让服务器返回一个PDF。其次,您希望服务器返回createshipment.aspx页面。
这正好违反了通信协议。也许最好的解决方案已经由另一个用户competent_tech提出了-你可以打开一个新窗口(javascript的window.open),这个新窗口将返回PDF,同时主窗口可以发布到服务器,并被重定向到createshipment.aspx。
发布于 2011-12-31 04:09:36
因此,简而言之,您希望导航到下一个页面,该页面类似于“谢谢您下载此文件”,然后开始下载。
你应该做的是在你的按钮上点击你需要生成的PDF并将其保存在某个地方(在磁盘或数据库中-在你的应用程序中更容易),将新文件的名称/位置(或来自数据库的主键)存储在会话变量中,并重定向到下一页。没有理由在这里转学。然后,在下一页上,您应该添加一个隐藏的iframe,它指向您保存的文件。
或者,您的按钮单击可能只是指向下一个页面的链接,其中包含一个隐藏的iframe,指向生成PDF的页面。这有点简单,但如果您需要将参数从原始页面传递到生成PDF的页面,则不会很好地工作。
发布于 2011-12-31 03:27:35
这是因为server.transfer“使用当前页面的...terminates执行,并通过使用页面的指定URL路径开始执行新页面”。
最好的办法是在获取PDF的客户端中打开一个新窗口,然后执行将用户移动到下一页所需的任何回发。
https://stackoverflow.com/questions/8683143
复制相似问题