0

.NET MVC Web アプリケーションがあります。私のページには、表示するPDFドキュメントを選択するフォームがあります。PDF ファイルを新しいウィンドウまたはタブで開きたい。ユーザーは、1 つまたは 2 つの PDF ファイルを表示するように選択できます。私のフォームはコントローラーにデータを投稿しますが、コントローラーから 2 つの 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 に答える