从Angularjs $resource passing object中调用WebApi

本文关键字:调用 WebApi object passing Angularjs resource | 更新日期: 2023-09-27 18:15:40

我试图从angularjs $http函数调用WebApi方法。我试过使用标准的get,查询和操作名称,但我被纠正了,意识到你不能用get传递对象。我用Post。Web Api正在被调用,并返回我期望的值。然而,angularjs端并没有得到这个值。这是最新的,这是不工作:

WebApi

[RoutePrefix("api/frequentpawner")]
    public class FrequentPawnerController : ApiController
    {
        [HttpPost]
        public HttpResponseMessage Post([FromBody] FrequentPawnerReportCriteria criteria)
        {
            var repo = new FrequentPawnerReport();
            var result = repo.GetReport(criteria);
            var httpResult = new HttpResponseMessage(HttpStatusCode.OK);
            var jsonMediaTypeFormatter = new JsonMediaTypeFormatter
            {
                SerializerSettings =
                    {
                        ContractResolver = new CamelCasePropertyNamesContractResolver()
                    }
            };
            httpResult.Content = new ObjectContent<List<FrequentPawnerReport>>(result, jsonMediaTypeFormatter);
            return httpResult;
        }
 function getFrequentPawner(criteria) {
            return $http.post("/api/FrequentPawner/Post", criteria)
                .then (getFrequentPawnerComplete)
                .catch(getFrequentPawnerFailed);
            function getFrequentPawnerComplete(response) {
                var x = response.data;
                return response.data.results;
            }
            function getFrequentPawnerFailed(error) {
                alert("XHR failed for frequent pawner report: " + error.responseText);
            }
        }

标准对象:

vm。标准= {maxResults: 25日startDate: new Date(2014, 10,1),endDate:新日期(2014,11,1),isActive:没错,transTypeId: 1、辖区:[],reportType: 1、关系:1、:",propertyGroupId: 0,propertyTypeId: 0,jurisdictionCount: 0,storeCount: 0,useTypePawn:假的,useTypeScrap:假}

从Angularjs $resource passing object中调用WebApi

我在你的代码中看到一些错误。

  1. 你的get方法返回集合,所以这里'get' : {method: 'GET', isArray: false }, isArray标志应该是true,否则你会得到错误从角,当得到响应。

  2. 你的Get方法没有参数,所以你可能需要像

    这样的东西
    public IEnumerable<string> Get(FrequentPawnerReportCriteria criteria)
    
  3. 你混淆了Get和Post方法。因此,这个动作FrequentPawnerReport可能应该是一个post,并且只返回一个对象。

    public FrequentPawnerReport Post([FromBody] FrequentPawnerReportCriteria criteria)
    {
        var repo = new FrequentPawnerReport();
        return repo.GetReport(criteria);
    }