MVC4:目标:当用户点击链接时:在内存中创建CSV文件类型的数据,并向用户显示浏览器的默认下载对话框,以允许用户在他的系统上保存为CSV文件。 使用以下代码时:浏览器的默认下载对话框不显示(在Chrome和IE中测试)。由于用户点击链接,视觉上没有任何反应。 在这种情况下如何强制浏览器的默认下载对话框?
MyView.cshtml
<div>
@Html.Partial("_MyTableView", Model)
</div>
@section scripts{
<script type="text/javascript">
function downloadMyCSV() {
alert("start download"); // pops-up
$.ajax({
type: "POST",
url: "@Url.Action("DownLoadMyCSV", "Home", new { Area ="MyArea" })",
data: {},
traditional: true,
success: function (data) {
alert(data); // shows data as commadelimited string
}
});
}
</script>
}
_MyTableView.cshtml
<a href="#" id="btnDowloadCsv" onclick="downloadMyCSV()">Download my CSV</a>
HomeController.cs
public FileContentResult DownLoadMyCSV()
{
string csv = "John, Steven, Smith";
return File(new System.Text.UTF8Encoding().GetBytes(csv), "text/csv", "myreport123.csv");
}
在这种情况下如何强制浏览器的默认下载对话框? 谢谢
答案 0 :(得分:0)
我们只有两种方法可以解雇csv。首先是一个重定向到csv下载的回发,但这并不理想。第二种方式是一个空白目标的链接。像这样的东西
<a href="@Url.Action("Action", "Controller")" target="_blank">Download Links(csv)</a>
新页面无法打开,但会触发下载对话框。我们尝试的其他所有内容都会在控制器上调用该方法,但下载对话框从未显示在ui上。希望这有帮助