如何通过$ http.Post从Angular发送json数据到webAPI POST方法?

时间:2019-02-07 16:59:31

标签: angularjs asp.net-web-api

我试图通过$ http.Post将数据作为JSON对象传递给webAPI方法。在WebAPI方法中,该方法的参数是一个类对象。

当我通过Postman测试webAPI方法时,它可以正常工作。但是,我无法通过有角度的$ http.post方法传递JSON对象-我在webAPI参数(类对象中)获得了空值。

有人可以建议如何解决此问题。我是AngularJS的新手。请提供帮助。

AngularJS代码

angular.module('Test.Employer')
    .controller('EmployerController', ['$scope','headerValue', '$http',
        function ($scope, headerValue, $http) { 
            var ipEmployerDetls = {                   
                EmployerName: "cherokee",
                Company: "ABC"                   
            };

            $http({ 
                url: "http://localhost:212122/api/Values/PostEmployeeData",
                dataType: 'json', 
                method: 'POST', 
                data: JSON.stringify(ipEmployerDetls), 
                headers: { 
                    "Content-Type": "application/json" 
                } 
            }).success(function (response) { 
                $scope.object = response.data;
            }) 
                .error(function (error) { 
                    alert(error.Message); 
                });
})();

WebAPI

using System.Web.Http;
using AttributeRouting.Web.Http;

namespace webAPITestProject.Controllers
{
    [Route("api/Values")] 
    public class ValuesController : ApiController
    {
        retrieveEmployeeData empData = new retrieveEmployeeData();
        retrieveProductDetails prodDetls = new retrieveProductDetails();    

        [Route("PostEmployeeData")] 
        [HttpPost]
        public DataTable PostEmployeeData([FromBody] Employer empDetails)
        {
            DataTable dataTable = new DataTable { TableName = "MyTableName" };
            dataTable = empData.getEmployeeData(empDetails);
            return dataTable;
        }
    }
}

注意:我在webAPI方法的empDetails中获得了NULL值,但是当我在Postman中测试该方法时,它具有了价值。

1 个答案:

答案 0 :(得分:0)

您的路由属性与指定$ http API调用的方式不匹配。

看起来您希望类级别的属性为:

[RoutePrefix("api/Values")]
public class ValuesController : ApiController

这将意味着PostEmployeeData的路由为 api / Values / PostEmployeeData

您还需要确保 ipEmployerDetls 中的属性直接映射到您的Employer类(未显示),以便模型绑定可以正常工作。