2012-10-09 2 views
4

텍스트 데이터를 MVC3의 csv로 내 보내야합니다. 나는 다음을 수행하십시오MVC 3을 사용하여 텍스트 데이터를 CSV로 내보내려면 어떻게해야합니까?

보기 :

$(".export").click(function() { 
    $.get("@Url.Action("Export","Log")"); 
}); 

CONTROLLER :

이 내용을 반환하지만 다른 이름으로 저장 및 열기 옵션 있는 창을 팝업하지 않습니다
public ActionResult Export() 
    { 
     var sb = new StringBuilder(); 

     var list = this.systemLogRepository.GetFilterList(
      null, this.ControllerContext.RequestContext.HttpContext.Request.QueryString, null); 

     foreach (var item in list) 
     { 
      sb.AppendFormat(
       "{0},{1},{2},{3},{4}", item.Machine.Name, item.PackageID, item.ErrorDescription, item.OccurenceTime, Environment.NewLine); 
     } 

     return this.File(new UTF8Encoding().GetBytes(sb.ToString()), "text/csv", string.Format("Log-{0}.csv", DateTime.Now.ToString("g").Replace("/","-").Replace(":","_").Replace(" ", "-"))); 
    } 

? 감사합니다.

+0

다른 브라우저에서 사용해 볼 수 있습니까? – gideon

답변

10

파일을 다운로드 할 때 AJAX를 사용하지 마십시오. 정상 링크 또는 버튼 사용 :

@Html.ActionLink("export to CSV", "Export", "Log") 

이제 자바 스크립트 비트를 제거 할 수 있습니다. AJAX를 사용하여 파일을 다운로드 할 수없는 이유는 실제로 콘텐츠가 클라이언트로 전송되기 때문입니다.하지만 자바 스크립트에서 다른 이름으로 저장 대화 상자를 열 수는 없습니다.

+0

+1 예. 거의 OP를 보지 못했습니다. 좋은 캐치. – gideon

+0

그랬습니다!. 덕분에 – ShaneKm

+2

가끔은 사람들이 jQuery 전에 웹이 jQuery와 자바 스크립트 전에 어떻게 작동했는지 잊어 버리는 경우가 종종 있습니다. 그것은 항상 나에게이 만화를 생각 나게한다 : http://i.stack.imgur.com/ssRUr.gif –

관련 문제