2012-03-19 4 views
0

요청시 보고서의 pdf를 작성하는 응용 프로그램 서버 측을 작성했습니다. 그런 다음 해당 보고서의 링크를 클라이언트로 다시 보낼 수 있습니다.Asp.net mvc Create pdf Async on button click

내 질문은 어떻게이 내 단추를 클릭 이벤트 내 asp.net mvc 웹 사이트에 연결해야합니까. 따라서 시나리오는 다음과 같습니다.

  1. 사용자가 몇 상자를 채 웁니다.
  2. 보고서 생성 버튼을 클릭합니다.
  3. 약간의 피드백 피드백 표시가 나타납니다.
  4. 요청이 서버로 전송되면 서버는 PDF 보고서를 생성하고 서버에서 호스팅되는 pdf로 URL 링크를 다시 보냅니다.
  5. 그러면 사용자 브라우저에 pdf가 표시됩니다 (새 창에 표시 될 수 있음).

가능한가요? 그 방법을 보여주는 방법이 있습니까?

미리 감사드립니다.

+3

아마 Ajax와 Json 응답이있는 컨트롤러를 사용하는 것이 가장 좋습니다. 처리하고 URL을 반환하자, 그 URL을 사용자에게 표시하십시오. –

답변

0

나는 비슷한 것을했습니다. 사용자가 버튼을 클릭하면
은 어떤 데이터를 전달 서버에 아약스 요청을 보내 :

$.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를 다시 보냅니다. I로드 피드백 표시기로 BlockUI jQuery를 사용한

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

:

이것은 IFRAME을 생성하는 스크립트 파일을 열고 다른 비트이다. 도움이 되길 바랍니다.