我正在尝试使用 CSVHelper 生成 CSV 文件并将其发送回浏览器,以便用户可以选择保存位置和文件名并保存数据。
该网站基于MVC。这是我用来进行调用的 jQuery 按钮代码(数据是 DTO 列表的一些序列化 Json 表示):
$.ajax({
type: "POST",
url: unity.baseUrl + "common/ExportPayments",
data: data
});
这是控制器代码:
[HttpPost]
public FileStreamResult ExportPayments()
{
MemoryStream ms = new MemoryStream();
StreamWriter sw = new StreamWriter(ms);
CsvWriter writer = new CsvWriter(sw);
List<Payment_dto> pd = _commonService.GetPayments();
foreach (var record in pd)
{
writer.WriteRecord(record);
}
sw.Flush();
return new FileStreamResult(ms, "text/csv");
}
这似乎什么也没做——将方法步骤调用到正确的代码位中,但响应为空,更不用说为用户提供文件对话框来保存数据了。我已经单步执行了这段代码,它从服务中取回数据,写入数据,并且没有抛出任何错误。那么我做错了什么?
编辑:返回这个......
return File(ms.GetBuffer(), "text/csv", "export.csv");
... 给我一个响应,由我期望的 csv 格式的数据组成。但是浏览器似乎仍然不知道如何处理它 - 没有向用户提供下载选项。