【问题标题】:Opening a new Window Codebehind ASP.net在 ASP.net 代码隐藏中打开一个新窗口
【发布时间】:2012-11-15 13:52:03
【问题描述】:

我有以下代码:

protected void Page_Load(object sender, EventArgs e)
{
        byte[] buffer = null;
        buffer = File.ReadAllBytes("C:\\myfile.pdf");
        HttpContext.Current.Response.ContentType = "application/pdf";
        HttpContext.Current.Response.OutputStream.Write(buffer, 0, buffer.Length);
        HttpContext.Current.Response.End();
}

我想在当前页面旁边为 pfd 文件打开第二个窗口,页面加载来自哪里。

【问题讨论】:

    标签: c# asp.net response


    【解决方案1】:

    为了做到这一点,您需要将 PDF 上传到应用程序中可以呈现给用户的路径,然后注册一些 javascript 以在新窗口中打开 PDF:

    protected void Page_Load(object sender, EventArgs e)
    {
        byte[] buffer = null;
        buffer = File.ReadAllBytes("C:\\myfile.pdf");
        //save file to somewhere on server, for example in a folder called PDFs inside your application's root folder
        string newFilepath = Server.MapPath("~/PDFs/uploadedPDF.pdf");
        System.IO.FileStream savedPDF = File.Create(newFilepath);
        file.Write(buffer, 0, buffer.Length);
        file.Close();
    
        //register some javascript to open the new window
        Page.ClientScript.RegisterStartupScript(this.GetType(), "OpenPDFScript", "window.open(\"/PDFs/uploadedPDF.pdf\");", true);
    }
    

    【讨论】:

    • 智能解决方案,但文件将被保存两次。所以我认为带有处理程序的解决方案会更好
    • 是的,他们会,我有点希望 PDF 不会保存在服务器上需要移动或复制的地方,这只是一个替代示例.也许他从asp:FileUpload 控件中获取文件?无论哪种方式,它都会提供一些有用的信息,并且注册这样的脚本有时会非常有用 =]
    • 我用不同的方式解决了它,但是注册脚本的提示是关键
    【解决方案2】:

    无法从代码隐藏文件打开新窗口。触发此 Page_Load 事件的页面的链接必须具有 target="_blank" 属性才能在新窗口中打开它。例如:

    <a href="DownloadPdf.aspx" target="_blank">Download PDF<a>

    附带说明,如果这是 ASPX 文件的唯一功能,您可能需要考虑改用 HttpHandler。

    【讨论】:

    • 好的,我一直在寻找一个我期待这个答案的解决方案:/ 我可以在另一个现有框架中打开我的 pdf 文件吗? target="customtarget"
    • @fubo 是的,您可以将目标设置为另一个框架或窗口的名称。
    【解决方案3】:

    你不能从响应中做到这一点。

    如果您可以控制导致此页面加载的超链接,您可以给它一个属性target="_blank",它将要求浏览器在新窗口中打开该链接。 p>

    【讨论】:

      猜你喜欢
      • 2010-10-28
      • 1970-01-01
      • 2010-09-29
      • 2022-10-15
      • 1970-01-01
      • 1970-01-01
      • 2012-01-14
      • 2016-10-19
      • 1970-01-01
      相关资源
      最近更新 更多