FileResult Загрузка не запускается - PullRequest
0 голосов
/ 05 сентября 2018

Я не могу вызвать результат действия файла загрузки. У меня есть следующий код.

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, который не требует нескольких параметров и который прекрасно запускает загрузку файла.

Что я делаю не так?

...