打开一个新的Window Codebehind ASP.net

时间:2012-11-15 13:52:04

标签: c# asp.net response

我有以下代码:

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文件打开第二个窗口,其中包含页面加载。

3 个答案:

答案 0 :(得分:1)

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

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

另外,如果这是ASPX文件的唯一功能,您可能需要考虑使用HttpHandler。

答案 1 :(得分: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);
}

答案 2 :(得分:0)

您无法通过回复执行此操作。

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