我正在使用MVC 3我想动态创建一个CSV文件供下载,但我不确定正确的MVC导向方法.
在传统的ASP.net中,我会写一些类似的东西:
Response.ClearHeaders(); Response.ContentType = "text/csv"; Response.AddHeader("content-disposition",attachment;filename='Test.csv'"); Response.Write("1,2,3"); Response.End();
我查看了ContentResult操作,但似乎我需要将结果创建为字符串,即
return Content(myData,“text / csv”);
我想,我可以构建一个字符串,但由于这些文件可能长达几千行,这对我来说似乎效率低下.
有人能指出我正确的方向吗?谢谢.
解决方法
我昨天在类似的问题上花了一些时间,这里是如何正确地做到这一点:
public ActionResult CreateReport() { var reportData = MyGetDataFunction(); var serverPipe = new AnonymousPipeServerStream(PipeDirection.Out); Task.Run(() => { using (serverPipe) { MyWriteDataToFile(reportData,serverPipe) } }); var clientPipe = new AnonymousPipeClientStream(PipeDirection.In,serverPipe.ClientSafePipeHandle); return new FileStreamResult(clientPipe,"text/csv"); }