如何通过jQuery模式对话框返回PDF的MVC文件ActionResult

时间:2013-09-16 16:01:30

标签: jquery-ui asp.net-mvc-4 pdf modal-dialog

注意:我不想显示与模态内联的PDF。相反,我希望浏览器确认该文件并允许用户保存或打开它。

我在MVC 4中有一个jQueryUI模式对话框。对话框是模态的。对话框的内容来自部分视图,工作正常。对话框本身只有一个按钮,并成功获取所有JavaScript来处理客户端数据输入检查。

令我头疼的是我在部分视图中嵌入了一个用于显示PDF文件的按钮。我可以成功调用一个JavaScript函数来调用从另一个服务器获取文件的控制器。我甚至可以将文件转换为字节数组,最后一行是 return File(contents, "application/pdf", "PropsedChanges.pdf");

然而它不会打开,因为我怀疑模态对话框正在阻止它。

我在模型对话框之外做了类似的事情,它为我提供了IE屏幕底部的保存/打开选项,或者在其他浏览器中以正确的方式提供。

有没有办法在浏览器外的客户端PC /设备上的注册PDF查看器中显示PDF,需要询问是否要保存或打开它?正如我怀疑的那样,由于模态对话而没有发生这种情况。

非常感谢帮助。

3 个答案:

答案 0 :(得分:1)

    public ActionResult GetPdf(Model modelo)
    {  
        return File(Pdf bytes[], "application/pdf");
    }

答案 1 :(得分:0)

尝试使用新窗口打开PDF。像target =“_ new”或“blank”。

答案 2 :(得分:0)

如果您使用的是Asp.net 5,请通过nuget安装MvcPdfActionResult

PM> Install-Package MvcPdfActionResult

只需使用返回类型,因为控制器中的PdfActionResult将输出PDF文档而不是HTML。这会使用iTextXmlWorker库将HTML转换为PDF。

  ...
  return PdfActionResult(model);
}

在asp.net 5 MVC项目中从您的剃刀视图生成pdf文档。 https://www.nuget.org/packages/MvcPdfActionResult/