将生成的PDF数据加载到ASP.NET MVC上的IFRAME中

时间:2015-04-03 03:59:24

标签: c# asp.net asp.net-mvc pdf iframe

我有一个ASP.NET网站,可以生成PDF格式的报告。我想在我的View上加载PDF和IFRAME。但是当我尝试时,它总是提示我下载PDF。我已经尝试使用File()方法,返回一个新的FileContectResult(),甚至只使用Response.BinaryWrite(),但似乎没有什么可以做的。有人有什么好建议吗?

以下是View中的Razor代码:

<script>
    $(document).ready(function () {
        var url = $('#reportUrl').val();
        $("#iframe1").attr("src", url);
    });
</script>
<input type="hidden" id="reportUrl" value="@Url.Action("ContactListPDF2","Reports")" />
<div class="block-head">
    <div class="item-content">
        <iframe id="iframe1" style="border: 1px solid black; height: 500px; width: 100%">

        </iframe>
    </div>
</div>

这是我控制器的适当方法:

public ActionResult ContactListPDF2()
{
    byte[] reportData = ReportsModel.GetContactListPDF();
    return new FileContentResult(reportData, "application/pdf");
}

我知道我错过了一些简单而明显的东西,但对于平均生活,我可以确定它是什么。

2 个答案:

答案 0 :(得分:3)

如果可能的话,我会抛弃iframe和javascript并转到<embed>

public ActionResult ContactListPDF2()
{
    byte[] reportData = ReportsModel.GetContactListPDF();
    return new FileContentResult(reportData, "application/pdf");
}

<embed src="@Url.Action("ContactListPDF2","Reports")" />

答案 1 :(得分:0)

请记得添加

Response.AppendHeader("Content-Disposition", "inline; filename=name.pdf");

虽然我遇到了同样的问题,但在我更改了浏览器的选项之前,没有一个解决方案在 Firefox 中无效。在Options

窗口,然后Application TabPortable Document Format更改为Preview in Firefox