JS
$.ajax({
type: "post",
url: "/Sum/MemberDayCSV",
data: { Date: date, Detail: detail, ConditionDisplay: conditionDisplay },
success: function (eg) {
console.log(eg);
}
});
C#
[HttpPost]
public FileContentResult MemberDayCSV()
{
string csvContent = "1,2,3,4,5,6";
return File(new System.Text.UTF8Encoding().GetBytes(csvContent), "application/csv", "sum_member_day.csv"); ;
}
它应该下载一个csv文件,但没有任何事情发生。 请帮助我,请你帮忙。
答案 0 :(得分:2)
它应该下载一个csv文件,但没有任何事情发生
您无法使用AJAX请求下载文件。问题是AJAX请求被发送到服务器,并且您正在回调内的客户端上接收CSV。但是,由于此回调在客户端上运行,因此无法提示用户保存文件,甚至更少将文件直接保存在文件系统上。这将是一个巨大的安全漏洞。
您应该做的是为用户提供指向您的控制器操作的单个链接,以便他可以在点击链接时下载CSV:
@Html.ActionLink("Download CSV", "MemberDayCSV", "Sum", null, null)
如果你想将一些参数传递给这个控制器动作,只需使用正确的重载:
@Html.ActionLink(
"Download CSV",
"MemberDayCSV",
"Sum",
new {
date: "some date",
detail: "some detail",
conditionDisplay: "some condition display"
},
null
)
作为替代方案,您还可以使用指向同一控制器操作的HTML表单:
@using (Html.BeginForm("MemberDayCSV", "Sum"))
{
@Html.Hidden("Date", "some date")
@Html.Hidden("Detail", "some detail")
@Html.Hidden("ConditionDisplay", "some condition display")
<button type="submit">Download CSV</button>
}