0

Microsoft の MVC プラットフォームを使用して Web アプリケーションを作成しています。このアプリケーションでは、ユーザーは HTML フォームに入力し、[送信] をクリックすると、正常なメッセージ ページにリダイレクトされ、フォームの PDF 形式の印刷物を受け取ります。さらに、フォームのエントリをデータベースに保存したいと考えています。iTextSharp を使用して PDF を作成および編集しています。

MVC でのワークフローの管理に関するアドバイスを探しています。具体的には、次のワークフローを指示するコントローラー メソッドがあります。

  1. フォームのエントリをデータベースに保存する
  2. PDFの作成と編集、
  3. ユーザーを成功ページに誘導し、
  4. ユーザーがダウンロードできるように PDF を返します。

私の主な質問は、成功ページにリダイレクトしてpdfを返すタスクをどのように委任すればよいですか? 今のところ、私のコントローラーはどちらか一方しか返せないようです。PDF に「付随する」ビューにリダイレクトできますか?

4

1 に答える 1

0

このような場合に私が行うことは、データベース内の特定のエントリ ID に関連付けられた PDF を返すコントローラー アクションを作成することです。

public FileResult DownloadPdf(int id)
{
    byte[] data;
    // ... Generate PDF
    return File(data, "application/pdf");
}

次に、フォーム POST を処理するコントローラー アクションは次のことを行います。

  1. エントリ値をデータベースに保存します。
  2. 保存されたフォーム エントリ セットの主キーを取得しています。
  3. 成功ビューにリダイレクトし、主キーを渡します。

次に、成功ビューは、与えられた ID を使用して PDF にリンクする (ダウンロード リンクとして) か、iframe に埋め込むことができます (うん!)。

これは、値をデータベースに保存しているためにのみ機能することに注意してください。データベースを使用しない場合は、次のいずれかを行う必要があります。

  1. すべてのフォーム データをクエリ文字列にエンコードします (サイズが制限されています)。
  2. フォーム データをセッションに保存します (これは推奨されません)。

それが役立つことを願っています。

于 2012-10-24T15:41:52.613 に答える