2016-11-24 2 views
-1

Ich möchte eine Liste in CSV-Datei mit MVC, Jquery exportieren. Ich möchte in eine Antwortdatei schreiben, aber nichts tun. Kein Download erscheint.Export nach CSV in mvc funktioniert nicht

Unten ist mein Code in .cshtml

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

in Js

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

In 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(); 
       } 
     } 

Ich versuche, wie diese auch

 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"); 
      } 
     } 
01 zu machen,

Ich mache auch wie diese

  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(); 
        } 
      } 

Aber immer noch nicht .. Kein Download CSV erscheinen .. Während Als ich es bekam alle Arbeiten, kein Fehler.

Antwort

1

Jetzt habe ich schon die Antwort bekommen. Ich wechsle das Skript so und es ist Arbeit ..

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"); 

Es ist Arbeit durch neue System.Net.Mime.ContentDisposition hinzufügen. Aber ich verstehe immer noch nicht warum.