从我的 MVC 控制器 URL 在新选项卡中打开 PDF [已编辑]

Open a PDF in new tab from URL from my MVC Controller [EDITED]

在我看来,我生成了一个 link,其中包含传递给控制器​​的用户名、帐号和日期:

   @Html.ActionLink(AccountGroup.AcctNum + " " + AccountGroup.DocDate.ToShortDateString(), "GetIndividualStatement", "Statements",  new { statementDate = @AccountGroup.DocDate.ToShortDateString(), Userid = @ViewBag.UserID, acctNumber = AccountGroup.AcctNum.ToString() }, new { @class = "form-control, col-sm-6,  medwidth" , target = "_blank" })

我也尝试过使用 AJAX link:

 @Ajax.ActionLink(AccountGroup.AcctNum + " " + AccountGroup.DocDate.ToShortDateString(), "GetIndividualStatement", "Statements", new { statementDate = @AccountGroup.DocDate.ToShortDateString(), Userid = @ViewBag.UserID, acctNumber = AccountGroup.AcctNum.ToString() }, new AjaxOptions { HttpMethod ="POST", UpdateTargetId = "detailsDiv" }, new { @class = "form-control, col-sm-6,  medwidth" })

然后我的控制器使用该信息为 PDF 生成一个加密的 URL(我必须在我的控制器中当场创建它,所以我不能只在我的视图中有一个 link用户点击(那太容易了!)。我需要打开 URL 其中 returns 一个 PDF。我需要打开它并在新选项卡中打开该 PDF(同时保留原始文件选项卡打开)。这是我最近的尝试,它在同一个 window 中打开,但如何在新选项卡中打开?

    WebClient client = new WebClient();
    Byte[] buffer = client.DownloadData(path);
    if (buffer != null)
    {
        Response.ContentType = "application/pdf";
        Response.AddHeader("content-length", buffer.Length.ToString());
        Response.BinaryWrite(buffer);
    }

感谢大家!

您在生成的最终 HTML 中寻找的是下面的形式,其中 link 的目标属性设置为“_blank”,

<a href="the_pdf_link/" target="_blank">Open PDF</a> 

做对了,你就会得到你想要的行为。

如果问题出在 server-side 代码中,那么当您解决它时,请编辑您的问题以包含修复程序,这样未来任何人都可以看到故事的两面。