我试图通过$ 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中测试该方法时,它具有了价值。
答案 0 :(得分:0)
您的路由属性与指定$ http API调用的方式不匹配。
看起来您希望类级别的属性为:
[RoutePrefix("api/Values")]
public class ValuesController : ApiController
这将意味着PostEmployeeData的路由为 api / Values / PostEmployeeData 。
您还需要确保 ipEmployerDetls 中的属性直接映射到您的Employer类(未显示),以便模型绑定可以正常工作。