0

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

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 实现了相同的东西,并且可以很好地触发文件的下载。

我究竟做错了什么?

4

0 回答 0