скачать Excel, используя ajax сообщение с параметрами. net core 3 - PullRequest
0 голосов
/ 01 февраля 2020

Приведенный ниже метод ExportExcel получен из контроллера, который вызывается Ajax методом getExcelDataByPost.

В ответе getExcelDataByPost я вызвал метод GET для DownloadExcel в контроллере, с которым я столкнулся, проблема в том, что я хочу сохранить свои данные, пока метод GET, называемый DownloadExcel, использует Tempdata, но Tempdata не работает. net core.

[HttpPost]
public IActionResult ExportExcel(List<string> wfsId, List<string> centerId, List<string> poolId, List<string> payer, List<string> csId, List<string> agingBucket, int timezoneOffset)
        {
            try
            {
                var values = iclmSvc.ExportExcel(wfsId.Select(int.Parse).ToList(), centerId, poolId, payer, csId.Select(int.Parse).ToList(), agingBucket.Select(int.Parse).ToList()).ToList();
                string fileGuid = Guid.NewGuid().ToString();
                values.ForEach(v =>
                {
                    v.MO = v.MO.AddMinutes(-timezoneOffset);
                    v.AOn = v.AOn.HasValue ? v.AOn.Value.AddMinutes(-timezoneOffset) : v.AOn;
                });
                var dataTable = ExcelHelper.ToDataTable<ByramClaimsforExcelVM>(values);
                var memoryStream = ExcelHelper.ExportDataSet(dataTable);
                memoryStream.Seek(0, SeekOrigin.Begin);
                TempData[fileGuid] =memoryStream.ToArray();
                string fileName = "General";
                fileName = string.Format("{0}.xlsx", fileName);
                var retvalue = new { FileGuid = fileGuid, FileName = fileName };
                return Ok(retvalue);
                // return File(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Report.xlsx");
            }
            catch (Exception e)
            {
                return Json(JsonResponseFactory.ErrorResponse(e.ToString()));
            }
        })

---------------------------------------------------------------------------------------------------------
>function getExcelDataByPost() {
        $('#reportdownload').on("click", function () {
            console.log(JSON.stringify({ wfsId: $('#armsstatusid').val(), centerId: $('#centerid').val(), poolId: $('#poolid').val(), payer: $('#payerid').val(), csId: $('#claimstatusid').val(), agingBucket: $('#agingbucketid').val(), timezoneOffset: new Date().getTimezoneOffset() }))
            $.ajax({
                dataType: "json",
                type: "POST",
                url: baseUrl + 'ClaimInfo/ExportExcel',
                data:{ wfsId: $('#armsstatusid').val(), centerId: $('#centerid').val(), poolId: $('#poolid').val(), payer: $('#payerid').val(), csId: $('#claimstatusid').val(), agingBucket: $('#agingbucketid').val(), timezoneOffset: new Date().getTimezoneOffset() },
                success: function (response) {
                    console.log(response, "Hello");
                    if (response != null) {
                        window.location=baseUrl + 'ClaimInfo/DownloadExcel?fileGuid=' + response.fileGuid + '&fileName=' + response.fileName;
                    }
                }, error: function (error) {
                    console.log(error, "error");
                }
            });
        });

    }
---------------------------------------------------------------------------------------------------------

 >[HttpGet]
        public ActionResult DownloadExcel(string fileGuid, string fileName)
        {
            if (TempData[fileGuid] != null)
            {

               // var deserializeObject = JsonConvert.DeserializeObject(TempData[fileGuid].ToString());
               // byte[] data = Encoding.ASCII.GetBytes(deserializeObject.ToString());
              byte[] data = TempData[fileGuid]  as byte[];
                return File(data, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", fileName);
            }
            else
            {
                return new EmptyResult();
            }

        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...