asp.net-mvc – 使用CSVHelper将流输出到浏览器
发布时间:2020-05-23 15:35:04 所属栏目:asp.Net 来源:互联网
导读:我试图使用CSVHelper生成CSV文件并将其发送回浏览器,因此用户可以选择保存位置和文件名并保存数据。 该网站是基于MVC的。这里是我用来进行调用的jQuery按钮代码(数据是DTO列表的一些序列化的Json表示): $.ajax({ type: POST, url: unity.baseUrl + common/E
|
我试图使用CSVHelper生成CSV文件并将其发送回浏览器,因此用户可以选择保存位置和文件名并保存数据。 该网站是基于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格式的数据。但是浏览器似乎还不知道该怎么做 – 不会向用户提供下载选项。 解决方法请尝试以下代码:public FileStreamResult ExportPayments()
{
var result = WriteCsvToMemory(_commonService.GetPayments()());
var memoryStream = new MemoryStream(result);
return new FileStreamResult(memoryStream,"text/csv") { FileDownloadName = "export.csv" };
}
public byte[] WriteCsvToMemory(IEnumerable<Payment_dto> records)
{
using (var memoryStream = new MemoryStream())
using (var streamWriter = new StreamWriter(memoryStream))
using (var csvWriter = new CsvWriter(streamWriter))
{
csvWriter.WriteRecords(records);
streamWriter.Flush();
return memoryStream.ToArray();
}
}
更新 以下是将复杂类型模型传递给使用GET HTTP方法的动作方法。我不喜欢这种方法,它只是给你一个想法,有一种方法来实现这一点。 模型 public class Data
{
public int Id { get; set; }
public string Value { get; set; }
public static string Serialize(Data data)
{
var serializer = new JavaScriptSerializer();
return serializer.Serialize(data);
}
public static Data Deserialize(string data)
{
var serializer = new JavaScriptSerializer();
return serializer.Deserialize<Data>(data);
}
}
行动: [HttpGet]
public FileStreamResult ExportPayments(string model)
{
//Deserialize model here
var result = WriteCsvToMemory(GetPayments());
var memoryStream = new MemoryStream(result);
return new FileStreamResult(memoryStream,"text/csv") { FileDownloadName = "export.csv" };
}
视图: @{
var data = new Data()
{
Id = 1,Value = "This is test"
};
}
@Html.ActionLink("Export","ExportPayments",new { model = Data.Serialize(data) }) (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- c#中分布方法和分部类
- asp.net-mvc-3 – 删除Razor MVC 3中的HTML格式
- asp.net – CheckBoxList多个选择:难度模型绑定
- asp.net核心 – 如何在Asp.Net Core中注册同一个接口的多个
- asp.net-core – .net核心自定义身份验证中的User.Identity
- asp.net-core – 如何在.Net Core应用程序中读取web.config
- 如何获取asp.net Windows身份验证中的用户详细信息
- asp.net-mvc – 何时使用RedirectToAction和哪里使用Redire
- asp.net – 具有管道模式=集成的IIS 7.0不会在ASP .NET中加
- 认识ASP.NET配置文件Web.config
推荐文章
站长推荐
- asp.net – 使用vb.net和EPPlus的单元格包装
- asp.net – 是否可以使用Membership API更改用户
- asp.net-mvc-3 – 在MVC3中禁用HTML.TextAreaFor
- asp.net-mvc – 如何在ASP.NET MVC中使用单选模式
- asp.net – Visual Studio 2015 Web应用程序.NET
- asp.net – 我对Html.TextBoxFor的工作原理有什么
- asp.net – 当HTTPContext .Current为Nothing时如
- 与asp.net mvc的dotnetopenauth证明太沮丧使用
- .net – 如何使用viewmodel绑定选择列表?
- asp.net – 如何防止asp:FormView作为表格呈现?
热点阅读
