我有一个@ Html.Action链接,目前可用于从控制器返回用户pdf文档。我希望能够使用ajax调用来执行相同的功能,但我仍然坚持如何,甚至可以做到这一点。我尝试了几种不同的迭代,但我从来没有从浏览器窗口下载pdf。以下是我到目前为止的情况:
$('#Button1').click(function () {
var poNum = "51970";
$.ajax({
type: "GET",
data: "id= " + poNum,
url: '@Url.Action("PoReport", new { controller = "LogisticsTools"})'
});
});
我可以从Chrome开发者工具的标题窗口中复制请求网址,然后将其粘贴到新页面中,然后下载pdf。我也可以在Response窗口中看到pdf代码,但是单击按钮时它不会被下载。我错过了什么?
答案 0 :(得分:2)
你不想这样做。将URL放在锚标记中,让浏览器完成剩下的工作。如果浏览器无法识别文档类型或者配置为强制文件下载,则文件将按预期下载(即用户将看到下载对话框)。如果文件被识别,可以在浏览器中打开,并且浏览器配置为打开文件,该文件将在浏览器中打开。
<a href='@Url.Action("PoReport", new { controller = "LogisticsTools"})'
title="Click to Download/Open">
Download
</a>
答案 1 :(得分:0)
使用ajax请求到服务器时无法下载PDF文件。所以不应该使用html actionlink。例如
@Html.ActionLink("Convert Data into PDF", "PDFView", null, new { @class= "btn btn-info" });
上面的代码将生成一个链接按钮,您可以访问控制器的Action Method。您也可以使用任何技术从控制器返回PDF文件,例如,您可以使用 FileResult
类返回PDF文件。