PDF抛出到浏览器控制台,而不是下载

我正在使用Rotativa 从视图生成PDF文件 ,效果很好,但现在在浏览器上我得到了在控制台抛出的原始文件,没有下载对话框,没有警告,没有。 这是我的代码:

调节器

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上的按钮

  

我在控制器上尝试了几个代码(结果相同),因为脚本和视图似乎工作正常。 但是,我怀疑,也许html或脚本需要一些调整来通知浏览器它必须下载文件?

提前谢谢大家。

我找到了解决方案。 它不优雅,但它的工作原理。 因此我不需要使用ajax来发出请求,也不需要为按钮提供function。 我确信这个问题与JS和/或jQuery有关。 然而,有一种更简单的方法可以做到这一点。

我将我的html按钮更改为:

 PDF 

所以它看起来像一个按钮,但它确实是我的控制器方法的链接。 我还删除了该按钮的脚本,现在它下载了该文件。 没有预期的名称,但仍然。

谢谢大家。 快乐的编码。

UPDATE

我一直在研究同一个项目,我想我发现了为什么我的PDF文件被扔进了控制台。

问题是,jQuery发出请求,所以jQuery管理响应。 就这么简单。 如果您查看.post() 官方文档 ,您将看到以下内容:

成功回调函数将传递返回的数据,该数据将是XML根元素或文本字符串,具体取决于响应的MIME类型。 它还传递了响应的文本状态。

从jQuery 1.5开始,成功的回调函数也传递了一个“jqXHR”对象(在jQuery 1.4中,它传递了XMLHttpRequest对象)。

大多数实现将指定成功处理程序。

我不是,所以,默认情况下,它只是将它放到控制台。 我希望这能为问题提供一些启示并提供帮助。 快乐的编码。