2013-04-05 78 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'; 
     });