2012-10-09 61 views
4

我需要將文本數據導出到MVC3中的csv。 我做到以下幾點:如何使用MVC 3將文本數據導出到csv?

VIEW:

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

控制器:

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

現在你可以擺脫的JavaScript位。您無法使用AJAX下載文件的原因是因爲內容確實會傳輸到客戶端,但無法從javascript打開另存爲對話框。

+0

+1 yep。幾乎沒有看到OPs視圖。接得好。 – gideon

+0

做到了!謝謝 – ShaneKm

+2

有時候人們會對這個jQuery感到如此不知所措,以至於他們只是忘記了jQuery以前的工作方式,甚至在javascript之前。它總是讓我想起這幅漫畫:http://i.stack.imgur.com/ssRUr.gif –

相關問題