【问题标题】:How do I export text data to csv using MVC 3?如何使用 MVC 3 将文本数据导出到 csv?
【发布时间】:2012-09-29 11:56:35
【问题描述】:

我需要在 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(" ", "-")));
    }

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

【问题讨论】:

  • 你能在不同的浏览器上试试吗?

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


【解决方案1】:

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

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

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

【讨论】:

  • 有时人们对这个 jQuery 东西感到不知所措,以至于他们忘记了在 jQuery 甚至 javascript 之前 Web 是如何工作的。它总是让我想起这幅漫画:i.stack.imgur.com/ssRUr.gif
  • @DarinDimitrov:你的漫画让我连续笑了 5 分钟!! :D
  • 我使用的是 asp.net mvc,但不是 razor。在这里,可以从控制器获取数据并在不使用 ajax 的情况下创建文件的 actionlink 的替代品是什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-03
  • 2012-12-19
  • 1970-01-01
  • 2021-06-29
  • 1970-01-01
  • 1970-01-01
  • 2014-01-09
相关资源
最近更新 更多