如何在.net核心的DataTemp中存储内存流3在控制器的操作中

时间:2020-02-07 11:26:53

标签: c# .net-core controller

我想在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);
      }
   }
}

1 个答案:

答案 0 :(得分:0)

这已经很老了,但是一旦您从TempData中检索到内容,就会被标记为删除。您检索两次;一次在条件中,一次在填充结果时。使用Peek()到达对象而不删除它。

相关问题