2016-11-24 10 views
-1

MVC、Jqueryを使用してリストをCSVファイルにエクスポートします。私は応答ストリームにファイルに書き込むが、何もしない。ダウンロードが表示されません。mvcのCSVにエクスポートできません

以下

が.cshtml

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

<button id="btnGenerateCSV">Generate CSV</button> 
の.jsで

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

で私のコードで私はこのようにしようも

 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を追加して作業しています。しかし、私はまだそれを理解していない。

関連する問題