【问题标题】:Send response to a new window from a postback?从回发中向新窗口发送响应?
【发布时间】:2015-05-13 12:25:46
【问题描述】:

我的 vb asp.net 应用程序中的示例

回发

// ... do stuff
Response.Clear()
Response.Buffer = True
Response.ContentType = "application/pdf"
Response.OutputStream.Write(fileData, 0, fileData.Length)
Response.End()

我尝试了多种方法,但对于使用脚本 document.forms[0].target = "_blank"; 和其他技术(例如创建单独的 aspx 页面并将二进制文件存储在会话中然后在加载函数中提供它),谷歌并没有为我的搜索者提供太多信息.

想也许你们中的一个可以成为我的救命恩人,在此先感谢

编辑:最近尝试This guys solution 没有成功。

【问题讨论】:

  • 你想达到什么目的?您希望 PDF 在新窗口中打开吗?这是 PDF 阅读器设置。
  • 我正在使用 3rd 方工具(强制)创建此 PDF - 这必须在回发中发生。我正在尝试将此文件读入内存并将其提供给新窗口(选项卡) - 不成功。据我所知,PDF阅读器设置与此无关。
  • 我说的是this。如果您真的需要打开一个新选项卡,那么所描述的技术对我来说听起来不错。如果你没有,也可以看看here
  • 我可以看出你现在的困惑了。我不会尝试在浏览器以外的任何地方打开它 - 关于在 adobe 中打开的链接。而到第二个链接 - 它对我不起作用,因为他们提供了一个以前下载到服务器并且不是来自回发的 PDF 文件。
  • 你不能把它保存在磁盘上吗?

标签: asp.net vb.net pdf response postback


【解决方案1】:

它不需要在回发中发生。您可以创建 PDF 并从通用处理程序 (.ashx) 提供它。在您的 ASPX 页面上,您可以打开一个新窗口,其中的 URL 指向 .ashx 页面,并通过查询字符串传递任何必要的参数。下面是 C#,但我想你会明白的。

PDFCreator.ashx

<%@ WebHandler Language="C#" Class="Handler" %>

using System;
using System.Web;

public class Handler : IHttpHandler
{
    public void ProcessRequest (HttpContext context)
    {
        context.Response.Clear();
        context.Response.Buffer = true;
        context.Response.ContentType = "application/pdf";
        var fileData = Database.GetFileData(); //this might be where you grab the query string parameters and pass them to your function that returns the PDF stream
        context.Response.OutputStream.Write(fileData, 0, fileData.Length);
        context.Response.End();
    }

    public bool IsReusable
    {
        get {return false;}
    }
}

ASPX 页面 Javascript

window.open("PDFCreator.ashx", "_blank");
//or
window.open('<%= ResolveClientUrl("~/PDFCreator.ashx") %>', '_blank');

如果您仍然希望在使用通用处理程序技术进行回发后发生这种情况,请尝试以下操作(同样是 C#):

ClientScriptManager.RegisterStartupScript(this.GetType(), "openpdf", "window.open('PDFCreator.ashx', '_blank');", true); //You can also use ResolveClientUrl if necessary

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-06
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多