2011-08-16 9 views
0

私は、典型的でないMVCアプリケーションをまとめて、レコードを作成してユーザーに提示しようとしています。新しいウィンドウを開くためにASP.NET MVCを取得するには?

MVCでWebフォームと同じように扱えないものがいくつか見つかりました。私のビューには2つのドロップダウン、テキストボックス、送信ボタンがあります。ドロップダウンの1つでは、コードと説明をあらかじめ入力する必要があります。その部分は完了です。

次に、ユーザーにテキストボックスにテキストを入力させます。検索ボタンをクリックします。 Findは2番目のドロップダウンを入力します。 viewstateなしでは、コードは少し異なりますが、可能です。次に、ユーザーは送信ボタンをクリックします。ここに難しい部分があります。私はPDFファイルを生成するためにビューからの入力を必要とし、新しいブラウザウィンドウまたはタブを開いてPDFを表示します。

また、プレゼンテーションを行う前にPDFをサーバから削除したいと考えています。 PDFをWebフォームで表示する前に削除することができます。私はActionlinkが新しいウィンドウを開くことができますが、Actionlinkはビューの入力をコントローラにプッシュしません。標準のフォーム送信ボタンはありますが、送信ボタンは新しいウィンドウを開きません。コントローラは新しいウィンドウでビューを開くこともできません。

ユーザーの入力を取得してその入力をコントローラにプッシュし、生成されたPDFを新しいブラウザウィンドウに表示するにはどうすればよいですか?その上に、私はサーバーからPDFを削除する必要があります。

答えて

0

JavaScriptを使用してビューを返すと、最初に新しいウィンドウが開き、別のビューに更新される場合があります。 javascriptがアクティブでない場合、ビューはリロードされず、リンクが手動で開くようになります。メモリ内にPDFを作成する場合、削除する必要はありません。メモリ内のPDFをクライアントにストリームするだけです。私は自分自身でMVCを初めて使いました。これは単なるアイデアです。 (私はこれをお勧めします):

public ActionResult DownloadPdf() 
{ 
    // you need some code here to generate the pdf to the memory stream. 

    return File(stream, "application/pdf", "DownloadName.pdf"); 
} 

それとも、使用することを好む場合

1

シンプルあなたはメモリストリームへのあなたのPDFファイルを生成する場合FileResult

としてあなたのPDFストリームを返すアクションを作成します直接ファイルパス:

public ActionResult DownloadPdf() 
{ 
    // get pdf filepath 
    var path = "Chap0101.pdf"; 

    return File(path, "application/pdf"); 
} 

は、その後、あなたのhtmlコードで使用すると、新しいウィンドウで開くには、このようなものを使用することができます。

@Html.ActionLink("Download pdf in new window", "DownloadPdf", "ControllerName", null, new { target = "_blank" }) 
関連する問題