C# 使用CSVHelper将流输出到浏览器,但无法保存文件

C# 使用CSVHelper将流输出到浏览器,但无法保存文件,c#,asp.net-mvc,csvhelper,C#,Asp.net Mvc,Csvhelper,除了浏览器(Chrome)不尝试下载.csv文件或向用户提供下载框之外,我正在尝试实现中的海报的功能。我使用的是HTTP GET请求,代码与上面的问题几乎相同。我正在使用Fiddler监控流量,我可以在响应中看到.csv文件流,但浏览器似乎忽略了它,我不知道为什么 以下是我当前的实现(基于@mattstrower的问题): 我对MVC控制器进行AJAX调用: $("#exportToCsvLink").click(function () { $.ajax({ type:

除了浏览器(Chrome)不尝试下载.csv文件或向用户提供下载框之外,我正在尝试实现中的海报的功能。我使用的是HTTP GET请求,代码与上面的问题几乎相同。我正在使用Fiddler监控流量,我可以在响应中看到.csv文件流,但浏览器似乎忽略了它,我不知道为什么

以下是我当前的实现(基于@mattstrower的问题):

我对MVC控制器进行AJAX调用:

$("#exportToCsvLink").click(function () {
    $.ajax({
        type: "GET",
        url: window.project.common.routes.urls.ExportChartDataToCsv,
        data: { parameterId: parameter.parameterId }
    });
});
MVC控制器处理CSV导出并返回
FileStreamResult

public FileStreamResult ExportChartDataToCsv(int parameterId)
{
    List<TestViewModel> data = _CommonService.GetData(parameterId);

    var result = WriteCsvToMemory(data);
    var memoryStream = new MemoryStream(result);

    return new FileStreamResult(memoryStream, "text/csv") { FileDownloadName = "export.csv" };
}

public byte[] WriteCsvToMemory(IEnumerable<TestViewModel> data)
{
    using (var memoryStream = new MemoryStream())
    using (var streamWriter = new StreamWriter(memoryStream))
    using (var csvWriter = new CsvWriter(streamWriter))
    {
        csvWriter.WriteRecords(data);
        streamWriter.Flush();
        return memoryStream.ToArray();
    }
}
public FileStreamResult ExportChartDataToCsv(int参数化)
{
列表数据=_CommonService.GetData(parameterId);
var结果=写入时间(数据);
var memoryStream=新的memoryStream(结果);
返回新的FileStreamResult(memoryStream,“text/csv”){FileDownloadName=“export.csv”};
}
公共字节[]WriteCSVTomery(IEnumerable数据)
{
使用(var memoryStream=new memoryStream())
使用(var streamWriter=新streamWriter(memoryStream))
使用(var csvWriter=新的csvWriter(streamWriter))
{
CSV编写器写入记录(数据);
streamWriter.Flush();
返回memoryStream.ToArray();
}
}

只使用ActionLink,而不使用ajax?请参阅@RaphaëlAlthaus,这很有效。另一篇文章建议通过AJAX调用实现这一点。正常的ActionLink将满足我的需要。谢谢,作为答案后,我会接受。