如何使用MVC 3将文本数据导出到csv?

时间:2012-10-09 07:44:48

标签: asp.net-mvc asp.net-mvc-3 export-to-csv

我需要将文本数据导出到MVC3中的csv。 我做了以下事情:

查看:

$(".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(" ", "-")));
    }

这将返回内容,但不会弹出一个包含“另存为”和“打开”选项的窗口 ?? 感谢

1 个答案:

答案 0 :(得分:10)

不要使用AJAX下载文件。使用普通链接或按钮:

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

现在你可以摆脱javascript位了。您无法使用AJAX下载文件的原因是因为内容确实会传输到客户端,但您无法从javascript打开“另存为”对话框。