2009-08-24 12 views
5

ASP.NET MVCアプリケーションでは、ページをレンダリングするアクション(Page)(wikiページなど)があります。ASP.NET MVC:別のアクション内でアクション出力を取得

ここで、Page()のHTML出力を収集し、そのページのPDF版を作成するためにHTML2PDFコンポーネントを使用する別のアクションRenderPdf()があります。

別のアクション内で1つのアクションのHTML出力を収集するにはどうすればよいですか。注:ビュー内ではなく、アクションコード内で直接。

答えて

0

MVC Futuresアセンブリを使用できます。

PDFはあなたがキャプチャするためにJavaScriptを使用カント出力の単なるコピーである場合があり、アクションのHTML出力を取得するRenderAction(と呼ばれる方法が)ですが、ビュー内から...

+0

実際、Bruno、RenderAction()はHtmlHelperで、ビュー内で使用するように設計されています。 mladenはレンダリングされた出力をキャプチャできません。 – apiguy

+0

ああ、はい、申し訳ありません。私は答えを適応させます。ありがとう –

0

イメージをレンダリングし、レンダーPDFに戻しますか?

または、最初の操作と同じモデル内のビューにpdfバージョンを渡します。ユーザーがそれを必要とするまで、それを隠しておきますか?

+0

zsharp、それは私がする予定の回避策ですが、私はそれに満足していません。私はPDFが100ページ長いような場合があります。 Javascriptでその大きなHTMLを前後に渡すのは好きではありません。 – mladen

+0

別の方法では、アクションコードにpdfを作成し、レンダリングビューの直前にサーバー上のファイルに保存することがあります。一意のIDを持つpdfにアクセスし、ファイル名のIDに一致するように表示します。 – zsharp

+0

zsharp、問題は - PDFを作成する私はHTML2PDFコンポーネントを使用しているので、まずHTMLが必要です – mladen

0

あなたは同様の質問には、このawnserをチェックアウトすることができます:

Send ASP.NET MVC action result inside email

はもちろん、あなたのHTML2PDFのPDF生成とSendEmailKThx()コールを交換する必要があります。ヤンウィレムBによって提案

0

方法が動作し、コントローラの名前だけを使用し、GetActionOutputを呼び出している間、私は、ASP .NET MVC 1.

でこれをテストしました。例えば、呼び出されたコントローラ名がAccountControllerである場合、それをアカウントのみとして扱う。

AccountControllerでTest Methodを呼びたい場合は、構文は次のようになります。 GetActionOutput( "Account"、 "Test");

関連する問題