我有一些连接 CSV 字符串的 JavaScript。然后将此字符串传递给 MVC 操作,该操作应打开一个文件对话框,要求用户选择他们想要打开 CSV 文件的程序类型。
最初,我只是使用 vb StringBuilder 来连接字符串,但我现在需要使用 js。由于某种原因,我无法获得与以前相同的对话框,但我的 MVC 操作没有改变。这是我处理连接并将字符串提交给 mvc 操作的 JavScript:
<script type="text/javascript">
$(document).ready(function () {
$("#csv-export").click(function () {
var csvStr = "";
$("#myTable tbody tr:visible").each(function () { //for each visible row
$(this).children("td").each(function () { //for each rows tds
if (!$(this).has("a").length) { //if the td does not contain a link
csvStr += $(this).html() + ", "; //Append the td's html
}
});
csvStr = csvStr.substring(0, csvStr.length - 2);
csvStr += "\n";
});
$.get('@Url.Action("CSVExport")', { csv: csvStr }, function (ReturnedData) {alert("Success!")});
});
});
</script>
我正确收到“成功!” 返回时提醒。
这是我的 MVC 操作,它正确接收字符串,例如 "field1, field2, field3 \n field1, field2, field3" 请注意每组字段之间的换行符:
Public Function CSVExport(ByVal csv As String) As FileContentResult
If csv Is Nothing Then csv = "Sorry! There was an error creating this CSV file."
Return File(New System.Text.UTF8Encoding().GetBytes(csv), "text/csv", "Report123.csv")
End Function
但是,唉,没有文件对话框出现。这是我的 JavaScript/Action Return 的问题吗?