asp.net-mvc - 如何使用 MVC 3 将文本数据导出到 csv?

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

我需要在 MVC3 中将文本数据导出到 csv。
我执行以下操作:

看法:

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

Controller :
    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(" ", "-")));
    }

这将返回内容,但不会弹出带有“另存为”和“打开”选项的窗口
??
谢谢

最佳答案

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

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

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

关于asp.net-mvc - 如何使用 MVC 3 将文本数据导出到 csv?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12795174/

相关文章:

asp.net-mvc - 你知道任何 ASP.NET MVC 代码生成器吗?

arrays - 将json文件转换为linux jq命令格式的csv

Python - 使用 Panda 将多个表添加到单个 CSV 中

javascript - 增加从js函数动态创建的表中行之间的间距

asp.net-mvc - 如何编辑 ViewModels 数据并将其保存回数据库

c# - OnAuthorization 中的 MVC 重定向导致授权失败

c# - DataAnnotations 在 MVC 中是如何工作的?

asp.net-mvc-3 - MVC 中什么取代了 ClientScriptManager?

javascript - 加载图表后如何获取 Google Visualization DataTable 数据?

c# - 在 ASP.NET MVC 中,当 Model.isvalid 为 false 时如何将验证消息重定向并显示回局部 View