我想在TempData文件中保存数据在ajax动作调用的方法中,Guid是关键。 下面的方法由ajax调用,并在ajax响应中再次调用Ajax GET DownloadExcel()方法。
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 memoryStream = ExcelHelper.ExportDataSet(dataTable);
memoryStream.Seek(0, SeekOrigin.Begin);
TempData[fileGuid] = memoryStream.ToArray();
var retvalue = new { FileGuid = fileGuid, FileName = fileName };
return Ok(retvalue);
}
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);
}
}
}
答案 0 :(得分:0)
这已经很老了,但是一旦您从TempData
中检索到内容,就会被标记为删除。您检索两次;一次在条件中,一次在填充结果时。使用Peek()
到达对象而不删除它。