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