导出到csv而不回发

时间:2013-12-03 08:45:14

标签: asp.net-mvc c#-4.0

我需要找到一种方法,通过使用一些jquery脚本将数据导出到csv文件而无需回发。

我试图通过使用ajax来实现这一点,下面是代码:

public ActionResult  ExportDealerData(int shopId, int? siteId, int dealerId, DateTime? frmDate, DateTime? toDate, string fileName)
{
     string csvexport = ExportToCsv
         .CreateInstance(shopinstance, null, null, shopInstanceDates, true)
         .ReturnCsvFile();

     return File(new UTF8Encoding().GetBytes(csvexport), "csv", "test.csv");
}

jquery的:

$.ajax({
  type: "POST",
  contentType: "application/json; charset=utf-8",
  url: oAxn.ds,
  data: JSON.stringify(oAxn.p(graphsDrpDwn)),
  success: function (graphData) {
       window.location = "/stealth/ExportDealerData?file=" + "test.csv";
  }
}


<asp:LinkButton ID="lnkMetricExport" CssClass="exportCsv composite" OnClientClick="YC.ajaxCall('dealerexport','dealerTab','','','');return false;" runat="server" Text="Export CSV" />

这是在没有任何错误的情况下执行,但是文件根本没有被创建。 它甚至没有显示保存文件对话选项框。

有人可以告诉我我做错了什么吗?

1 个答案:

答案 0 :(得分:0)

这不是这样做的方法--AJAX调用期望HTML,XML或JSON - 你要返回一个文本文件。

根本不需要AJAX调用。只需将您的操作设为“获取”,然后在您的网页上提供指向该操作的链接即可。如果您不想打开新页面,只需附加相应的标题以强制下载。

MVC没有回发的想法 - GET请求只是另一个请求。