【问题标题】:How To Wrap Parameters into JSON Object and Pass to the Controller via HttpGet?如何将参数包装成 JSON 对象并通过 HttpGet 传递给控制器​​?
【发布时间】:2016-12-29 17:35:14
【问题描述】:

目前我正在创建一个 Angular Web Api 客户端以将 JSON 对象传递给 MVC Web Api 控制器。控制器正在使用 HttpGet 方法。

这是 Angular Web api 客户端的代码:

    var AngularModule = angular.module('contentApp', []);        

    var parameter = JSON.stringify({ contentid: 1, contenttitle: "Lorem Ipsum" });

    AngularModule.controller('contentCtrl', function ($scope, $http, ApiCall) {
        var result = ApiCall.GetApiCall("http://localhost:8000/api/content/search?" + parameter).success(function (data) {
            console.log(data);
            $scope.ContentList = data;
        });
    });

    AngularModule.service('ApiCall', ['$http', function ($http) {
        var result;

        this.GetApiCall = function (EndPoint) {
            result = $http.get(EndPoint).success(function (data, status) {
                result = (data);
            }).error(function () {
                alert("Error Occured");
            });
            return result;
        };
    }]);

这是控制器(服务)的代码:

[HttpGet("Search")]
    public async Task<IActionResult> Search([System.Web.Http.FromUri] Content list)
    {
        try
        {
            return new ObjectResult(new { status = 1, message = await ContentRepo.Search(new Models.Content())});
        }
        catch (Exception ex)
        {
            return BadRequest(ex.Message);
        }
    }

我已经尝试过了,但是每当它碰到控制器时,由于格式类型不同(始终为空)而无法读取对象。

我的问题是:是否可以从 URL (QueryString) 读取 JSON 对象?如果可能的话,如何处理?

任何帮助将不胜感激:)

谢谢

【问题讨论】:

    标签: c# asp.net angularjs json asp.net-mvc


    【解决方案1】:

    您是否尝试过将您的parameter 对象传递给$http.get 的数据参数?

    请查看 AngularJS 的文档以获取 $http: https://docs.angularjs.org/api/ng/service/$http#get

    另外,您需要使用then,因为$http.get 返回一个承诺。

    var AngularModule = angular.module('contentApp', []);        
    var parameter = { contentid: 1, contenttitle: "Lorem Ipsum" };
    
    AngularModule.controller('contentCtrl', function ($scope, $http, ApiCall) {
        var result = ApiCall.getApiCall("http://localhost:8000/api/content/search", { data: parameter  }).then(function successCallback(data) {
            console.log(data);
            $scope.ContentList = data;
        }, function errorCallback(errData) {
            alert('Error Occurred');
        });
    });
    
    AngularModule.service('ApiCall', ['$http', function ($http) {
        this.getApiCall = function (endPoint, data) {
            return $http.get(endPoint, data);
        };
    }]);
    

    【讨论】:

    • 你好,好的,我试试看,结果会回复你的:)
    • 嗨,这里不走运,控制器收不到对象,别名为null
    猜你喜欢
    • 2021-03-01
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 2018-10-07
    • 2016-04-08
    • 2020-01-27
    相关资源
    最近更新 更多