Я пытаюсь использовать CSVHelper для создания CSV-файла и отправки его обратно в браузер, поэтому пользователь может выбрать место сохранения и имя файла и сохранить данные.Использование CSVHelper для вывода потока в браузер
Веб-сайт основан на базе 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");
}
который, кажется, достичь точно ничего - вызов метода переходит в правильный бит кода, но ответ пуст, не говоря уже о предоставлении пользователю диалогового окна файла для сохранения данных. Я прошел через этот код, и он возвращает данные из службы, записывает их и не вызывает ошибок. Так что я делаю неправильно?
EDIT: Возвращение этого ...
return File(ms.GetBuffer(), "text/csv", "export.csv");
... дает мне ответ, состоящий из данных CSV-формате, что я ожидал. Но браузер по-прежнему не знает, что с ним делать - пользователю не предлагается вариант загрузки.
Попробуйте установить скрипач http://fiddler2.com/. Вы сможете точно увидеть, что возвращается браузеру, когда этот метод выполняется. – mituw16
Ничего не происходит. Однако я обнаружил, что он связан с типом действия - метод в настоящее время установлен на POST, потому что я хотел отправить ему некоторые сложные данные. Если я изменю его на GET, он работает так, как ожидалось. Я не понимаю, почему POST ведет себя по-другому, но он все равно должен отправить ответ? –