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

C# 在单独的窗口/选项卡中以表单提交方式显示两个pdf文档,c#,asp.net-mvc,asp.net-mvc-3,C#,Asp.net Mvc,Asp.net Mvc 3,我有.NETMVCWeb应用程序。在我的页面上,有一个表单可以选择要显示的pdf文档。我想在新窗口或选项卡中打开pdf文件。用户可以选择显示一个或两个pdf文件。我的表单将数据发布到控制器,但我不知道如何从控制器返回两个PDF并显示在单独的窗口/选项卡中 有人知道如何做到这一点吗?您可以让模型将文档的URL写入javascript代码块 @if(model.ShowPDFs) { <script> function ShowPDF() { window.open('@mod

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


有人知道如何做到这一点吗?

您可以让模型将文档的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>

}
@if(model.showPDF)
{
函数ShowPDF()
{
window.open('@model.PdfUrl1');
@if(model.Open2Pdf)
{
window.open('@model.PdfUrl2');
}
}
//加载页面3秒后打开文档
setTimeOut(“ShowPDF()”,3000);
}
我做了类似的事情(但我使用ReportViewer构建了pdf服务器端):

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

  • 控制器操作读取发布的数据,查询数据库 并决定我必须归还多少PDF
  • 控制器操作在会话中保存要传递给ReportViewer的数据,每个pdf使用不同的键(由我的逻辑决定)
  • 控制器操作返回(ajax调用的回调)一个数组,其中包含用于在会话中存储数据的所有键
  • 客户端,返回数组上的js回调循环,对于每个项,调用(在不同选项卡中打开链接)不同的控制器(其唯一职责是向请求发送pdf),在查询字符串中传递该pdf的键
  • PrintController从会话读取数据(使用收到的密钥),生成报告并在响应中发送
我想你也可以做类似的事情;我不明白您的pdf是如何生成的(它们是数据还是服务器上已有的pdf?),但您可以在会话中保存pdf流或pdf路径,而不是像我一样保存数据


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

我想从这里你会对如何继续你自己有一个想法。你一直在尝试这样做,但还没有得到。我有返回PDF流的函数,所以我的控制器返回FileStreamResult,如“return File(filestream,“application/PDF”,“filename.PDF”);”试图将其放入模型并生成视图,但这对我不起作用。如果您使用Adobe作为查看器,将会出现问题,因为它无法很好地自动化。