c# - 如何使用angularjs在c#中调用API

标签 c# angularjs ajax razor asp.net-web-api2

您好,我正在使用以下代码调用我的 API

  $http.get('/api/controller/method?param=value').
           then(function (response) {
               if (response.status == 200) {
                   console.log(response.data);
               }
           });

它在我的本地机器上运行良好 ( http://localhost/api/controller/method?param=value )。

但是当我将它部署到应用程序名称为 app 的服务器时,它无法调用 API(http://server-ip/app/api/controller/method?param=value)。

显然不会,因为 URL 不同。 那么在 c# 中调用 API 的正确方法是什么,这样它就可以在任何服务器上运行

我尝试过的:
1. URL.Action :在这种情况下不起作用。
2. 我不想使用@HTML.hidden
3.调用以或不以斜杠(/)开头

最佳答案

我通常使用像这样的 factory 来解决这个问题 -

首先,在 .cshtml 页面中,我加载了所有需要的 Angular js。 然后像这样为 baseURL 创建一个工厂 -

function(angular){
    var module = angular.module('NameOfMyModule');  //gt the module
    module.factory('BaseUrl', function(){
         return '@Url.Action("Action", "Controller")';
    });
}(window.angular);

然后在 Controller 中注入(inject) BaseURL -

....
module.controller('SomeController', [...., 'BaseUrl', function(...., BaseUrl){
     $scope.baseUrl = BaseUrl;

}]);

....`

最后在url中加上它

$http.get($scope.baseUrl + /...../).then(....);

关于c# - 如何使用angularjs在c#中调用API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34262574/

相关文章:

java - 在线获取 UTC 时间的可靠方法?

c# - 多屏全屏(WPF)

javascript - angularJS:源/流更改时自动播放视频

javascript - 条件中可能的异步调用

c# - 在 .Net Core 中写入 EventLog

c# - 当不应该使用它时,成员(member)凭据验证出现问题失败

javascript - 使用 ng-init 设置的变量未定义

javascript - AJAX 和 Python 错误 - 请求的资源上不存在 'Access-Control-Allow-Origin' header

c# - $.ajax 返回页面的 HTML 而不是结果

php - 使用 Ajax 和 PHP 检查数据库中的现有用户