Я пытаюсь использовать CSVHelper для создания CSV файла и отправки его обратно в браузер, поэтому пользователь может выбрать место сохранения и имя файла и сохранить данные.
Веб-сайт основан на MVC. Вот код кнопки jQuery, который я использую для выполнения вызова (данные представляют собой сериализованное Json-представление списка DTO):
$.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, которые я ожидаю. Но браузер по-прежнему не знает, что с ним делать - пользователю не предлагается вариант загрузки.