asp.net-mvc – 从MVC Controller导出到CSV,View在页面上显示CSV原始数据
发布时间:2020-05-24 10:58:29 所属栏目:asp.Net 来源:互联网
导读:我刚刚将我的MVC视图导出到Excel工作得很好,但是,因为我正在设置location.href,这会让我看到一个充满CSV数据的页面而不是用户点击EXPORT按钮之前的整齐网格结果. 我正在尝试考虑如何更改以下脚本来执行其操作,但只留下页面.我试着调用搜索再次返回服务器但是
|
我刚刚将我的MVC视图导出到Excel工作得很好,但是,因为我正在设置location.href,这会让我看到一个充满CSV数据的页面而不是用户点击EXPORT按钮之前的整齐网格结果. 我正在尝试考虑如何更改以下脚本来执行其操作,但只留下页面.我试着调用搜索再次返回服务器但是在运行时用户暂时看到网页上的CSV,这是不好的. 任何想法非常感谢,干杯 $(function() {
$('#exportButton').click(function() {
var url = $('#AbsolutePath').val() + 'Waste.mvc/Export';
var data = {
searchText: $('#SearchTextBox').val().toString(),searchTextSite: $('#SearchTextBoxSite').val().toString(),StartDate: $('#StartDate').val(),EndDate: $('#EndDate').val()
};
$('#ResultsList').load(url,data,function() {
$('#LoadingGif').empty();
location.href = url + "?searchText=" + data.searchText + "&searchTextSite=" + data.searchTextSite + "&StartDate=" + data.StartDate + "&EndDate=" + data.EndDate;
});
//Search(); this fixes because grid is displayed again after csv results
});
});
我的控制器代码: public FileStreamResult Export(string searchText,string searchTextSite,string StartDate,string EndDate)
{
var searchResults = getSearchResults(searchText,searchTextSite,StartDate,EndDate);
HttpContext.Response.AddHeader("content-disposition","attachment; filename=Export.csv");
var sw = new StreamWriter(new MemoryStream());
sw.WriteLine(""Ref","Source","Collected"");
foreach (var line in searchResults.ToList())
{
sw.WriteLine(string.Format(""{0}","{1}","{2}"",line.WasteId,line.SourceWasteTypeId.ToDescription(),line.CollectedDate.ToShortDateString()));
}
sw.Flush();
sw.BaseStream.Seek(0,SeekOrigin.Begin);
return new FileStreamResult(sw.BaseStream,"text/csv");
// return File(sw.BaseStream,"text/csv","report.csv"); Renders the same result
}
解决方法您可以让控制器操作将CSV文件作为附件返回(它将使用Content-Disposition:attachment; filename = report.csv HTTP标头):public ActionResult GetCsv()
{
byte[] csvData = ...
return File(csvData,"report.csv");
}
现在你可以放心地做一个window.location.href =’/ reports / getcsv’;并且将提示用户下载CSV报告,但它将保留在同一页面上. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – axd和ashx处理程序之间的区别
- asp.net-mvc – 为一个MVC视图使用两个强类型模型
- asp.net – Ajax.ActionLink调用控制器两次
- asp.net – 什么Jenkins插件可以用于.NET网站部署?
- ASP.net处理XML数据实例浅析
- asp.net-mvc-3 – 滚动我自己的@ Html.BeginfBrm()
- asp.net – 我应该在Web应用程序中嵌入CSS / JavaScript文件
- 如何创建一个asp.net会员提供者手动加密密码?
- asp.net – 如何在转发器中每行显示x个项目?
- asp.net – IE bug无效源HTML5音频 – 解决方法
推荐文章
站长推荐
- asp.net – 如何在IIS7中为HttpHandler注册多个路
- MVC ASP.NET – 手动授权某人并通过表单身份验证
- 如何动态地从ASP.NET MVC控制器获取数据到jQuery
- asp.net-mvc-3 – MVC EditorFor命名模板的问题
- asp.net-mvc3 EditorFor模板名称问题
- asp.net-mvc – 具有区域的Url.Action()返回空字
- asp.net-mvc – 为什么UserManager.CreateIdenti
- ASP.NET MVC 4 / Web API – 为Accepts插入Razor
- asp.net-mvc-3 – SmtpClient.SendAsync阻止我的
- asp.net – Javascript之前asp:ButtonField点击
热点阅读
