我的视图中有这样的东西:
var url = '@Url.Action("DownloadZip", "Program")' + '?programNums=' + selectedRow;
$.ajax({
url: url,
dataType: 'json',
async: false,
success: function (data) {
if (data != "Successful") {
alert(data);
}
}
});
如果出现错误,控制器可以返回文件或返回 JSON 结果。一直无法让他们两个一起工作。
这是它的样子:
public ActionResult DownloadZip(string programNums)
{
if(string.IsNullOrEmpty(programNums))
{
return Json("Error, blank info sent.", JsonRequestBehavior.AllowGet);
}
var memoryStream = new MemoryStream();
using (var zip = new ZipFile())
{
zip.AddFile("C:\\sitemap.txt");
zip.Save(memoryStream);
}
memoryStream.Seek(0, 0);
return File(memoryStream, "application/octet-stream", "archive.zip");
}
我看到的是 ajax 调用需要返回一个 JSON 值。因为在我的情况下,它返回一个文件,它不能工作。无论如何,要处理我正在做的事情,它可以从 ajax 调用中返回 JSON 或 File。