2015-11-06 74 views
0

我嘗試通過ajax調用使用ASP MVC模型 下載一個PDF文件按鈕點擊我的按鈕時,什麼都沒有發生,但當我在url上添加控制器方法我的文件被下載。 我想下載它只能在點擊鏈接僅通過ajax調用下載PDF文件ASP MVC

JS:

$('#PrintTimeSheet').click(function() { 
      $.ajax({ 
       type: 'POST', 
       url: "/Home/DownloadFile", 
       success: function (response) { 
       } 
      }); 
}); 

控制器:

public FileResult DownloadFile() 
{ 
    Document PDF = new Document(); 
    MemoryStream memoryStream = new MemoryStream(); 
    PdfWriter writer = PdfWriter.GetInstance(PDF, memoryStream); 
    PDF.Open(); 
    PDF.Add(new Paragraph("Something")); 
    PDF.Close(); 
    byte[] bytes = memoryStream.ToArray(); 
    Response.ContentType = "application/pdf"; 
    Response.AddHeader("Content-Disposition", "attachment;filename=Receipt-test.pdf"); 
    Response.BinaryWrite(memoryStream.ToArray()); 
    return File(bytes, "application/pdf"); 
} 
+0

創建一個鏈接(和樣式它看起來像一個按鈕,如果這是你想要的)。 –

+0

你是什麼意思「僅在按鈕上單擊JS」?如果您實際上是在該操作方法中創建該pdf文件,那麼如何擺脫服務器端的操作? –

+0

我不能使用鏈接,因爲我有其他的條件和JS的說明在AJAX調用之前 –

回答

4

不要使用AJAX來下載文件。這是非常棘手的,你可以在this question看到它。

無論如何,最好使用GETwindow.location.href couse文件下載異步。

$('#PrintTimeSheet').click(function() { 
    window.location.href = "/Home/DownloadFile"; 
}); 

[HttpGet] 
public FileResult DownloadFile() 
{ 
//your generate file code 
} 
+0

下面你的例子我的工程在IE中,但不是Firefox。有什麼建議麼? –

+0

@FreekNortier如果你還有問題,最好再問一個問題 –