2013-04-05 67 views
2

我在使用 $ .ajax()下载csv文件时遇到问题。的代码。MVC - 如何在mvc3中使用ajax下载csv文件

我有一个控制器正在返回文件如下。

public ActionResult ExportEx() 
{ 
    StringBuilder sb = new StringBuilder(); 
     sb.Append("<table>");    
     sb.Append("<tr>"); 
     sb.Append("<td>1</td>"); 
     sb.Append("<td>2</td>"); 
     sb.Append("<td>3</td>"); 
     sb.Append("<td>4</td>"); 
     sb.Append("</tr>"); 
     sb.Append("<table>");   

    HttpContext.Response.AddHeader("content-disposition", "attachment; filename=student_" + DateTime.Now.Year.ToString() + ".xls"); 
    this.Response.ContentType = "application/vnd.ms-excel"; 
    byte[] buffer = System.Text.Encoding.UTF8.GetBytes(sb.ToString()); 
    return File(buffer, "application/vnd.ms-excel"); 
} 

我index.cshtml文件,如下

<input type="submit" value="Export To Excel" title="Export To excel" />   

<script type="text/javascript"> 
    $(".tt").click(function() { 
     $.ajax({ 
      url: '/Home/ExportEx', 
      type: 'POST', 
      data: {}, 
      success: function (data) { }, 
      complete: function (data) { } 
     }); 
    }); 
</script> 

如果我叫使用<a class="tt" href="@Url.Action("ExportEx", new { })">export</a>我可以下载csv文件。但通过$.ajax打电话我无法下载。

请帮助我。

在此先感谢。

+0

为什么通过ajax做到这一点?难道你只是使用一个actionLink来下载文件? – Nate 2013-04-05 04:31:25

+0

我需要将一些动态值传递给操作方法。所以,我正在使用ajax调用 – Vasanth 2013-04-05 09:40:22

+0

您可以使用隐藏的表单元素将动态值传递给控制器​​。我不认为阿贾克斯在这里是正确的做法。 – Nate 2013-04-05 23:53:18

回答

1
 $('button').click(function() { 
      window.location.href = '/Home/ExportEx'; 
     });