2012-04-07 13 views
1

プログラミングが初めてです。私はアクションのリンクを使用している場合、それがうまく機能MVCからPDFを印刷しようとしています、ここに私のコードです:MVC json対ActionLink

function PrintChart(fc) { 

       var fc = "Test"; 
       var url = '<%= Url.Content("~/Home/GeneratePdf") %>'; 
       $.post(url, { fc: fc }, 
      function (content) { 
       if (content != null) { 5 } 
      }, "json"); 

<input type="button" onclick="PrintChart();" value="Print" /> 

I:私はJSONを使用する必要が

<%= Html.ActionLink("Print","GeneratePdf","Home", new { fc="Test" },null) %> 

    public ActionResult GeneratePdf(string fc) 
     { 
      Document document = new Document(); 
      MemoryStream workStream = new MemoryStream(); 
      PdfWriter.GetInstance(document, workStream); 
      document.Open(); 
      document.Add(new iTextSharp.text.Paragraph("\n\n")); 
      // need to add the user name 
      iTextSharp.text.Paragraph p = new iTextSharp.text.Paragraph("Name: " + fc); 
      p.Alignment = 1; 
      document.Add(p); 

      document.Close(); 
      byte[] byteInfo = workStream.ToArray(); 
      SendPdfToBrowser(byteInfo); 
      return null; 
     } 

    public void SendPdfToBrowser(byte[] buf) 
     { 
      string filename = "Certificate.pdf"; 

      // Prepare the headers. 
      Response.ClearContent(); 
      Response.ClearHeaders(); 
      Response.ContentType = "application/pdf"; 
      Response.AddHeader("Content-Disposition", "attachment; filename=" + filename); 

      // Write the PDF data. 
      Response.BinaryWrite(buf); 

      // Flush the buffer to the browser. 
      Response.End(); 
      Response.Flush(); 
      Response.Clear(); 
     } 

、ここのコードですエラーは発生しませんが、PDFファイルは生成されません。前もって感謝します。

+0

1は、JSONまたはActionLinkのを動作し、あなたはそれがpdfファイルを生成していないと言うとき、あなたは –

+0

ActionLinkの作品をダウンロードするファイルを得ることはありません意味:とiframeのSRCを設定します。 Jsonを使用してもファイルはダウンロードされません。 – hncl

答えて

0

ファイルをダウンロードするためにAjaxを使用することはできません。 jQuery $ .post()は、サーバーからの応答がテキストであると予想します。ファイルの Ajaxの方法でファイルをダウンロードするには、一般的なアプローチは、URLに非表示のiframeを使用して、IFRAMEのSRCを設定することです

PrintChartで
<iframe id="hiddenFrame" src="" style="display:none; visibility:hidden;"></iframe> 

()クエリ文字列などのデータを含むURLを作成します

function PrintChart(fc) { 

    var fc = "Test"; 
    var url = '<%= Url.Content("~/Home/GeneratePdf") %>'; 
    url += "?fc="+fc; 

    $('#hiddenFrame').attr('src', url); 
} 
+0

キブリアありがとう、それは私がそれをvar fc = $( '#vtest1')に変更するとうまくいきました。 それは動作しませんか? – hncl

+0

実際には、それはvar fc = $( "#vtest1")。val();私は二重引用符を使用した。再度、感謝します – hncl

関連する問題