0

我有 .NET MVC Web 应用程序。在我的页面上有一个表格可以选择要显示的 pdf 文档。我想在新窗口或标签中打开 pdf 文件。用户可以选择显示一个或两个 pdf 文件。我的表单将数据发布到控制器,但我不知道如何从控制器返回两个 pdf 并显示在单独的窗口/选项卡中。

有谁知道如何做到这一点?

4

2 回答 2

0

我以这种方式制作了类似的东西(但我使用 ReportViewer 构建了 pdf 服务器端):

我的表单将数据发布到控制器操作(使用 ajax)

  • 控制器操作读取发布的数据,据此查询数据库,并决定我必须返回多少个 pdf;
  • 控制器操作保存在会话中,每个 pdf (由我的逻辑确定)使用不同的键,将数据传递给 ReportViewer;
  • 控制器操作返回(到 ajax 调用的回调)一个数组,其中包含用于在会话中存储数据的所有键;
  • 客户端,js 回调循环遍历返回的数组,并且对于每个项目,调用(它在不同的选项卡中打开一个链接)不同的控制器(其唯一职责是将 pdf 发送到请求)在查询字符串中传递它,该pdf的密钥;
  • PrintController 从会话中读取数据(使用收到的密钥),构建报告并在响应中发送它。

我认为您可以做类似的事情;我不明白您的 pdf 是如何构建的(它们是依赖于数据的还是服务器上预先存在的 pdf?),但是您可以保存 pdf 流或会话中的 pdf 路径,而不是像我这样的数据。

希望有所帮助;如果您认为我的解决方案可以为您工作并且您需要一些代码,我可以尝试从我的代码库中提取一些(在我的情况下还有其他问题,如果您需要,我必须重写代码......)。

于 2013-02-10T19:04:12.193 回答
0

您可以让模型将文档的 url 写入 javascript 代码块

@if(model.ShowPDFs)
{

<script>
function ShowPDF()
{
    window.open('@model.PdfUrl1');
    @if(model.Open2Pdf)
    {
        window.open('@model.PdfUrl2');
    }
}

// opens the document after 3 seconds after the page has loaded
setTimeOut("ShowPDF()", 3000);


</script>

}
于 2012-08-14T09:52:46.053 回答