2012-03-19 13 views
0

リクエスト時にレポートのpdfを作成するアプリケーションサーバー側を作成しました。その後、そのレポートのリンクをクライアントに送り返すことができます。Asp.net mvc Create pdf Async on button click

私の質問はどのように私のasp.net mvcのウェブサイトのボタンのクリックイベントにこれを接続するのですか?したがって、シナリオは次のようになります。

  1. ユーザーはいくつかのボックスを入力します。
  2. [レポートの生成]ボタンをクリックします。
  3. 少しのフィードバックフィードバックインジケータが表示されます。
  4. リクエストがサーバーに送信されると、サーバーはPDFレポートを生成し、サーバー上でホストされているpdfにURLリンクを返します。
  5. その後、ユーザーのブラウザに新しいウィンドウが表示されます。

これは可能ですか、どのように表示するかについての例はありますか?

ありがとうございます。

+3

おそらく、おそらくAjaxとJsonレスポンスのコントローラを使用している可能性があります。それを処理してURLを返させ、そのURLをユーザに表示させます。 –

答えて

0

私は何か似たようなことをしました。ユーザーは、それはいくつかのデータを渡して、サーバーにAJAX要求を送信するボタンをクリックすると

$.ajax({ 
    type: 'POST', 
    dataType: 'json', 
    url: '<%=Url.Action("GenerateReport", "MyController")%>', 
    data: { Param1: $('#Param1').val() , Param2: $('#Param2').val() }, 
    beforeSend: function(xhr) { 
     $.blockUI({ message: '<h1> printing ...</h1>', css: { border: 'none', padding: '15px', backgroundColor: '#000', '-webkit-border-radius': '10px', '-moz-border-radius': '10px', opacity: .5, color: '#fff'} }); 
    }, 
    success: function(result) { 
     if (result.Success) { 
      FetchPdfDocument('<%=Url.Action("GetPdfReport", "MyController", New With {.id = "/"})%>' + result.Guid); 
    } 
    else { 
     alert("Problems!"); 
    } 
    }, 
    complete: function() { 
     $.unblockUI(); 
    }, 
    error: function(req, status, error) { 
     alert(error); 
    } 
}); 

コントローラは、ディスク上のドキュメントを書き込み、PDFドキュメントの名前でGUIDを送り返します。

これは、IFRAMEを作成し、ファイルを開くのjavascriptの他のビットです:

function FetchPdfDocument(UrlToPdf) 
    { 
    $('#ifPdfReport').remove(); 
    $(document.body).append('<IFRAME id="ifPdfReport" style="display:none;">'); 
    $('iframe#ifPdfReport').attr('src', UrlToPdf); 
    // $('#ifPdfReport').load(function() { });      
    } 

私はフィードバックインジケータをロードするようにjQuery BlockUIを使用しました。 お手伝いをしてください。