我似乎无法触发下载文件的动作结果。我有以下代码。
HTML:
<td align="right">
<label class ="excelLink">Export to excel</label>
</td>
JavaScript:
$('.excelLink').click(function () {
var url = '@Url.Content("~/Controller/ExcelExport")';
var statusFilters = new Array();
var meterFilters = new Array();
$('[name="CheckBox"]:checked').each(function () {
statusFilters.push($(this).val());
});
$("#lstMeters option:selected").each(function () {
meterFilters.push($(this).text());
});
$.ajax({
url: url,
type: 'POST',
traditional: true,
dataType: 'json',
data: {
'code1': $("#code1").val(),
'code2': $("#code2").val(),
'city': $("#city").val(),
'date': $("#date").val(),
'meterFilter': meterFilters,
'statusFilter': statusFilters
},
})
});
控制器:
public async Task<FileResult> ExcelExport(string code1, string code2, string city, string date,
string[] meterFilter, string[] statusFilter)
{
DateTime parsedDate = DateTime.MinValue;
if (!String.IsNullOrEmpty(date))
{
parsedDate = DateTime.Parse(date);
}
var records = await DataService.GetData(code1, code2, city, parsedDate, meterFilter, statusFilter);
return DataExcelExport.ExcelExport(records);
}
在ExcelExport方法中,此返回:
return dataExcelExport.WriteToFile(package, fileName);
哪个调用此方法:
private FileResult WriteToFile(ExcelPackage package, string fileName)
{
return File(new MemoryStream(package.GetAsByteArray()), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", fileName);
}
一切正常,直到返回FileResult并且前端未发生任何事情。我们使用Razor ActionLink实施了同一件事,但不需要多个参数,并且可以触发文件的下载。
我在做什么错了?