使用不与angularJs一起使用的整数参数发布到api

时间:2017-06-16 19:02:30

标签: angularjs asp.net-web-api http-post

我尝试发布到api,接受使用angular的整数参数,如下所示

 function getDailyErrors() {
            var uri = "/api/users/error-counts/";
            var inData = { numberOfDays : 5}
            return $http.post(uri, inData)
                .then(function (response) {
                    return response.data;
                });
        }

API

 [HttpPost]
        [Route("api/users/error-counts/")]
        public MultiCategorySeriesDto<int> GetErrorCounts(int numberOfDays=15)
        {
            return _uow.Events.Errors(numberOfDays);
        }

由于某些原因,API不接受我传递的参数,而是采用默认的int参数。 我可以知道错误在哪里吗?

3 个答案:

答案 0 :(得分:1)

尝试使用视图模型:

public class MyViewModel
{
    public int NumberOfDays { get; set; }
}

您的控制器操作将作为参数:

[HttpPost]
[Route("api/users/error-counts/")]
public MultiCategorySeriesDto<int> GetErrorCounts(MyViewModel model)
{
    return _uow.Events.Errors(model.NumberOfDays);
}

答案 1 :(得分:0)

由于这是一个POST,请尝试使用参数上的[FromBody]属性让模型绑定器知道在哪里查找数据

[HttpPost]
[Route("api/users/error-counts/")]
public MultiCategorySeriesDto<int> GetErrorCounts([FromBody]int numberOfDays = 15)
{
    return _uow.Events.Errors(numberOfDays);
}

答案 2 :(得分:0)

以下代码适用于我,使用与您的问题中发布的相同的API代码。

    global.Himanshu.ErrorServices.factory('errorcountservices', ['$q', '$http', function ($q, $http) {
    return {getDailyErrors: fucntion()  {
            var deffered = $q.defer();
            $http({
                method: 'POST',
                url:/api/users/error-counts/',
                params: {
                    numberOfDays: 5
                },                    
            }).then(function (response) {
                deffered.resolve(response.data);
            },function (response) {
                deffered.reject(response.data);
            })
            return deffered.promise;
        }}