首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Response.TransmitFile和Server.Transfer

Response.TransmitFile和Server.Transfer
EN

Stack Overflow用户
提问于 2011-12-31 03:20:51
回答 4查看 2.3K关注 0票数 2

我有一个ASP.NET应用程序,在一个点上生成一个PDF文件,并加载下一页。我可以用两个单独的按钮很容易做到这一点,但当我试图用一个按钮来做到这一点时,就会变得困难得多。

当这两个按钮都被同一个按钮触发时,PDF将会下载,但页面将不会加载。我甚至让线程在文件传输后休眠,但它会等待,但随后就会停止。

我附上了我一直在尝试的代码:

代码语言:javascript
复制
Response.ContentType = "application/pdf";
Response.AppendHeader("Content-Disposition", "attachment; filename=labels.pdf");
Response.TransmitFile(Server.MapPath("~/"+randomNumber.ToString()+".pdf"));
Server.Transfer("~/createshipment.aspx", true);
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-31 03:38:27

您不能从服务器获得两个不同的响应,但您正在尝试这样做。

首先,你想让服务器返回一个PDF。其次,您希望服务器返回createshipment.aspx页面。

这正好违反了通信协议。也许最好的解决方案已经由另一个用户competent_tech提出了-你可以打开一个新窗口(javascript的window.open),这个新窗口将返回PDF,同时主窗口可以发布到服务器,并被重定向到createshipment.aspx

票数 1
EN

Stack Overflow用户

发布于 2011-12-31 04:09:36

因此,简而言之,您希望导航到下一个页面,该页面类似于“谢谢您下载此文件”,然后开始下载。

你应该做的是在你的按钮上点击你需要生成的PDF并将其保存在某个地方(在磁盘或数据库中-在你的应用程序中更容易),将新文件的名称/位置(或来自数据库的主键)存储在会话变量中,并重定向到下一页。没有理由在这里转学。然后,在下一页上,您应该添加一个隐藏的iframe,它指向您保存的文件。

或者,您的按钮单击可能只是指向下一个页面的链接,其中包含一个隐藏的iframe,指向生成PDF的页面。这有点简单,但如果您需要将参数从原始页面传递到生成PDF的页面,则不会很好地工作。

票数 1
EN

Stack Overflow用户

发布于 2011-12-31 03:27:35

这是因为server.transfer“使用当前页面的...terminates执行,并通过使用页面的指定URL路径开始执行新页面”。

最好的办法是在获取PDF的客户端中打开一个新窗口,然后执行将用户移动到下一页所需的任何回发。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8683143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档