FileResult下载不会触发

时间:2018-09-05 12:28:16

标签: jquery ajax model-view-controller fileresult

我似乎无法触发下载文件的动作结果。我有以下代码。

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实施了同一件事,但不需要多个参数,并且可以触发文件的下载。

我在做什么错了?

0 个答案:

没有答案