document.location在尝试下载文件时修改WebApi路由

时间:2016-01-15 20:54:28

标签: javascript angularjs asp.net-web-api

我有一个使用AngularJs和WebApi构建的应用程序。我按下按钮时尝试下载文件。这是ng-click的代码:

                $scope.download = function (documentObj) {
                if (documentObj && documentObj.FileName)
                {
                    var urlParams = "sId=" + documentObj.IdStudy + "&fId=" + documentObj.IdRequiredFile + "&fName=" + documentObj.FileName;

                    document.location = "api/document/download?" + urlParams;
                }
            };

这在Chrome和Mozilla中运行良好,但在IE中却不行。在任何IE浏览器中 我注意到在运行此代码后,WebApi的URL在IE中非常不同。更具体地说:

我工作的视图有以下网址:http://localhost:54094/admin/studies/edit/1 在我调用应该开始下载的ng-click功能后,我看到以下结果:

因此,在IE中,不会调用正确的WebApi服务。

我错过了什么或做得不对?任何提示将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:1)

应该使用绝对路径而不是相对路径...只需添加/

document.location = "/api/document/download?" + urlParams;

浏览器会在网站根目录中查找api目录,假设您未在页面中使用<base>标记