angularjs通过IE8 / 9上的POST下载文件,无需刷新页面

时间:2014-06-17 18:51:16

标签: html asp.net-mvc angularjs internet-explorer-8 internet-explorer-9

我尝试使用隐藏表单从服务器下载动态生成的文件。

以下是我用来提交隐藏表单的角度函数

$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上工作

0 个答案:

没有答案