gpt4 book ai didi

asp.net-mvc - 从 MVC Controller 导出到 CSV 并查看在页面上显示 CSV 原始数据

转载 作者:行者123 更新时间:2023-12-04 09:55:00 26 4
gpt4 key购买 nike

我刚刚将我的 MVC View 导出到 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
});
});

我的 Controller 代码:
    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

}

最佳答案

您可以让 Controller 操作将 CSV 文件作为附件返回(它将使用 Content-Disposition: attachment; filename=report.csv HTTP header ):

public ActionResult GetCsv()
{
byte[] csvData = ...
return File(csvData, "text/csv", "report.csv");
}

现在你可以安全地做 window.location.href = '/reports/getcsv';系统将提示用户下载 CSV 报告,但它会停留在同一页面上。

关于asp.net-mvc - 从 MVC Controller 导出到 CSV 并查看在页面上显示 CSV 原始数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6775248/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com