2011-02-11 14 views
1

これは簡単な回答ですが、私はMVCを初めて使い慣れているので、 PDFをブラウザに送信することによってリンクを作成します。MVC:ユーザーの選択を返信してPDFで返信する方法

  • 私はリクエストされたコンテンツを生成できるように、メソッドにポストバックする必要があるページ上にIDの文字列を持っています。
  • コントローラに公開されているメモリストリームとしてPDFを構築できます。
  • 私は、ユーザーがリンクをクリックした同じページにとどまり、 "Save to ..."ダイアログが表示されるようにします。

私は戻って(文字列)のIDを投稿する私の見解に置くべきか、私のコントローラは請求書と呼ばれる方法がDownloadInvoiceであると仮定すると、私はこのポストバックへの対応はどうすればよいですか?

は、私は単にこの

return new FileStreamResult(generatedInvoice.Stream, "application/pdf"); 

または私は完全な

Response.Clear(); 
Response.ContentType = "application/pdf"; 
Response.AddHeader("content-disposition", "attachment;filename=labtest.pdf"); 
Response.Buffer = true; 
Model.Stream.WriteTo(Response.OutputStream); 
Response.End(); 

を持っている別のビューにビューアを指示する必要があるんで応答することができますか?

答えて

1

別のビューは必要ありません。 FileStreamResultは、コントローラーアクションで十分である必要があります([Post]属性を使用してそのようなアクションをフィルターしたい場合があります)。

+0

チップのおかげで、Oded - 前の投稿への私のコメントを見てください。 また、HttpPostと別のカスタム属性を使用して、同じWebサイトからのアクセスを許可しています。 – awj

+0

@awj - 'あなたの選択をバックに投稿する 'とはどういう意味ですか?あなたはPDFを返送しています。 – Oded

+0

@Oded - ページにはチェックボックスのリストがあります。ユーザーはこれらのチェックボックスを選択し、リンクをクリックします。この選択は、PDFのコンテンツがユーザの選択によって指示されるように、サーバにポストバックする必要があります。ユーザーがPDFを要求するのは単なるケースではなく、ユーザーはPDFの内容を決定します。 – awj

1

なぜあなたはそれを試してみませんでしたか?

return new FileStreamResult(generatedInvoice.Stream, "application/pdf"); 

ファイルストリームを返すと、ファイルが返されます。これは、ブラウザに別のURLをロードするように通知するヘッダや何も送信しません。

+0

私は新しいFileStreamResult()を使用して返答することができましたが、どのようにユーザの選択項目を投稿するのですか?メソッドとコントローラ(この場合はメソッドが同じコントローラ上にありますが)とユーザ選択を含むオブジェクトの何らかの種類の点を使用できる方法はありますか?喜んで私はこのユーザーの選択を決定し、それをフォーマットするためにいくつかのjavascriptを使用しなければならないことに留意してください。 – awj

関連する問題