我尝试使用隐藏表单从服务器下载动态生成的文件。
以下是我用来提交隐藏表单的角度函数
$scope.downloadCsv = function() {
var dataset = JSON.stringify($scope.dataset);
var body = $('body');
var reportParamJson = angular.toJson($scope.dataset);
var hiddenForm = "<form action='/Reports/SaveTestCsv' method='POST' target='_blank'><input type='hidden' name='dataset' value='" + dataset + "'/ ><button id='submitCSV' type='submit'></button></form>";
body.append(hiddenForm);
$('#submitCSV').click();
}
下面是使用文件
生成响应的.net mvc方法[HttpPost]
public ActionResult SaveTestCsv(string dataset)
{
var data = JsonConvert.DeserializeObject<MyObject>(dataset);
var binary = getTestCSV(data);
var file = File(binary, "text/csv", "test.csv");
return file;
}
以下是我使用ng-include
在视图中包含的部分html页面中的相关html代码<div><a href="#" ng-click="downloadCsv()">Download CSV</a></div>
<div ng-grid="gridOptions"></div>
当我点击&#34;下载CSV&#34;时,Chrome,FF和IE10会提示我保存文件而不刷新页面/视图,但在IE8 / 9上,页面会刷新,因此内容来自ng-include标签消失了,特别是上面发布的html不再存在。
我想知道这是否与IE8 / 9的网址中的hashbang有关,有什么方法可以解决这个问题吗?
我最终完全从angular中删除了路由,只是使用.net MVC为我做路由,然后它在IE8上工作