2016-11-24 3 views
-1

Я хочу экспортировать список в CSV-файл, используя MVC, JQuery. Я хочу записать файл в поток ответов, но ничего не делает. Нет загрузки.Экспорт в CSV в mvc не работает

Ниже мой код в .cshtml

<button id="btnGenerateCSV">Generate CSV</button> 

в .js

$('#btnGenerateCSV').click(function() { 
    $.post(root + "ClaimInternal/DownloadCsv"); 
}); 

В myController

  private string GetCsvString(IList<Area> Area) 
     { 
      StringBuilder csv = new StringBuilder(); 

      csv.AppendLine("AreaID,AliasName,Description,BankName"); 

      foreach (Area area in Area) 
      { 
       csv.Append(area.AreaID + ","); 
       csv.Append(area.AliasName + ","); 
       csv.Append(area.Description + ","); 
       csv.Append(area.BankName + ","); 

       csv.AppendLine(); 
      } 

      return csv.ToString(); 
     } 


     public void DownloadCsv() 
     { 
      using (Database db = new Database(_ConnectionString)) 
      { 
       AreaDAC dacArea = new AreaDAC(db); 
       List<Area> data = dacArea.Search("", "", ""); 
       string facsCsv = GetCsvString(data); 

       // Return the file content with response body. 
       Response.ContentType = "text/csv"; 
       Response.AddHeader("Content-Disposition", "attachment;filename=Area.csv"); 
       Response.Write(facsCsv); 
       Response.End(); 
       } 
     } 

Я стараюсь сделать так же

 public FileContentResult DownloadCsv() 
     { 
      using (Database db = new Database(_ConnectionString)) 
      { 
       AreaDAC dacArea = new AreaDAC(db); 
       List<Area> data = dacArea.Search("", "", ""); 

       JsonResult result = new JsonResult(); 
       result.JsonRequestBehavior = JsonRequestBehavior.AllowGet; 
       result.Data = data; 

       string facsCsv = GetCsvString(data); 
       return File(new System.Text.UTF8Encoding().GetBytes(facsCsv), "text/csv", "Area.csv"); 
      } 
     } 

Я делаю также, как этот

  public void DownloadCsv() 
      { 
       using (Database db = new Database(_ConnectionString)) 
       { 
        AreaDAC dacArea = new AreaDAC(db); 
        List<Area> data = dacArea.Search("", "", ""); 
        string facsCsv = GetCsvString(data); 

        // Return the file content with response body. 
            Response.Clear(); 
       Response.Buffer = true; 
       Response.AddHeader("content-disposition", "attachment;filename=Area.csv"); 
       Response.Charset = ""; 
       Response.ContentType = "application/text"; 
       Response.Output.Write(facsCsv); 
       Response.Flush(); 
       Response.End(); 
        } 
      } 

Но до сих пор не работает .. Нет загрузки появляются CSV .. Хотя Когда я получил это все работает, без ошибок.

ответ

1

Теперь у меня есть ответ. Изменить сценарий, как это и это работа ..

var cd = new System.Net.Mime.ContentDisposition 
       { 
        FileName = "Area.csv", 
        Inline = true, 
       }; 
       Response.AppendHeader("Content-Disposition", cd.ToString()); 
       return File(new System.Text.UTF8Encoding().GetBytes(facsCsv), "text/csv"); 

Это работа, добавив новый System.Net.Mime.ContentDisposition. Но я все еще не понимаю, почему.

Смежные вопросы