CSVHelper を使用して CSV ファイルを生成し、それをブラウザーに送り返そうとしているので、ユーザーは保存場所とファイル名を選択してデータを保存できます。
Web サイトは 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形式のデータで構成される応答が返されます。しかし、ブラウザーはまだそれをどう処理すればよいかを認識していないようです。ユーザーにダウンロード オプションが提供されていません。