我正在使用 Rotativa從視圖生成 PDF 文件,效果很好,但現(xiàn)在在瀏覽器上,我得到了控制臺拋出的原始文件,沒有下載對話框,沒有警告,什么都沒有。這是我的代碼:控制器public ActionResult DescargarPDF (int itemId) { var presupuesto = ReglasNegocio.Fachada.Consultas.ObtenerPresupuesto(itemId); return new Rotativa.PartialViewAsPdf("_PresupuestoFinal", presupuesto) { FileName = "Presupuesto_" + itemId + ".pdf", PageSize = Rotativa.Options.Size.A4 }; }jQuery 腳本:$(".convertirPDF").on("click", function (id) { var itemId = $(this).data('itemid'); Pdf(itemId);});function Pdf(itemid) { var id = itemid; $.ajax({ method: "POST", url: 'DescargarPDF', data: { itemId: id }, cache: false, async: true, });};HTML 上的按鈕<button class="convertirPDF btn btn-secondary btn-info" data-itemid="@item.Id">PDF</button>我已經在控制器上嘗試了幾個代碼(結果相同),因為腳本和視圖似乎工作正常。但是,我懷疑,也許 html 或腳本需要一些調整來通知瀏覽器它必須下載文件?提前謝謝大家。
1 回答

慕蓋茨4494581
TA貢獻1850條經驗 獲得超11個贊
我找到了解決辦法。這并不優(yōu)雅,但它有效。所以我不需要使用ajax來發(fā)出請求,也不需要為按鈕提供功能。我有點確定這個問題與 JS 和/或 jQuery 有關。不過,有一種更簡單的方法可以做到這一點。
我將我的 html 按鈕更改為:
<a href="DescargarPDF/?itemId=@item.Id" target="_blank" class="btn btn-secondary btn-info">PDF</a>
所以它看起來像一個按鈕,但它實際上是我的控制器方法的鏈接。我還刪除了該按鈕的腳本,現(xiàn)在它會下載文件。不是有意的名字,但仍然。
謝謝大家??鞓肪幋a。
更新
我一直在做同一個項目,我想我找到了為什么我的 PDF 文件被扔進控制臺。
問題是,jQuery 發(fā)出請求,因此 jQuery 管理響應。有那么簡單嗎。如果您檢查的官方文檔的.post()
,你會看到以下內容:
成功回調函數(shù)將傳遞返回的數(shù)據(jù),根據(jù)響應的 MIME 類型,該數(shù)據(jù)將是 XML 根元素或文本字符串。它還傳遞響應的文本狀態(tài)。
從 jQuery 1.5 開始,成功回調函數(shù)還傳遞了一個“jqXHR”對象(在 jQuery 1.4 中,它傳遞了 XMLHttpRequest 對象)。
大多數(shù)實現(xiàn)將指定一個成功處理程序。
而我不是,所以,默認情況下,它只是將它放到控制臺。我希望這能對問題有所了解并有所幫助??鞓肪幋a。
- 1 回答
- 0 關注
- 176 瀏覽
添加回答
舉報
0/150
提交
取消