在表单提交中在单独的窗口/选项卡中显示两个pdf文档

时间:2012-08-14 09:46:51

标签: c# asp.net-mvc asp.net-mvc-3

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

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

2 个答案:

答案 0 :(得分: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>

}

答案 1 :(得分:0)

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

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

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

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

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