Response.data是一个奇怪的对象

时间:2016-06-30 05:06:27

标签: angularjs json http asp.net-web-api2 ienumerable

我使用Angularjs $http.post向在IEnumerable<>中返回IHttpActionResult的网络API发出请求。我有一个奇怪的问题,response.data是一个包含$id$values$prototype等的对象,$values是实际列表所在的位置位于。

所以我必须使用return response.data.$values来返回对我来说有点尴尬的实际数据。我确定我在这里做错了什么。有什么想法吗?

由于

编辑:已发布代码

另外,如果我只返回一个对象而不是IEnumerable,那么data对象会直接向我提供数据。

    [ResponseType(typeof(IEnumerable<Mastersite>))]
    //[Authorize]
    [HttpPost]
    [Route("Owner/Mastersites")]
    public IHttpActionResult GetMastersitesForOwner([FromBody]JObject data)
    {
        try
        {
            if (data["organisationid"] == null)
            {
                throw new NullReferenceException();
            }
            else if (!StringHelper.ValidIds(data["organisationid"].ToObject<string>()))
            {
                return Content(HttpStatusCode.BadRequest, Errors.MultipleInvalidIdsErrorMessage +
                "[organisationid]");
            }
            else {

                string organisationId = data["organisationid"].ToObject<string>();
                string mastersiteids = data["mastersiteids"] == null ? "" : data["mastersiteids"].ToObject<string>();

                var mastersites = OrganisationService.GetMasterSitesJoined(organisationId);

                if (!string.IsNullOrEmpty(mastersiteids))
                    mastersites = mastersites.Where(x => mastersiteids.Contains(x.mastersiteid));


                return Ok(mastersites);
            }
        }
        catch (NullReferenceException ex)
        {
            return Content(HttpStatusCode.BadRequest, Errors.MissingArgumentsErrorMessage +
                "[organisationid]");
        }
        catch (Exception ex)
        {
            return Content(HttpStatusCode.InternalServerError, Errors.DefaultErrorMessage);
        }
    }

然后是帖子请求

OrganisationRepository.GetMastersites = function () {
        var data = {
            organisationid : '93'
        };

        $http.post(apiURL + "api/Organisation/Owner/Mastersites", data).then(
            function (success) {
                alert(success.data.length); // this returns undefined
                alert(success.data.$values.length); // this returns the correct number of results
            }
            , function (failure) { });
    }

这是数据对象的样子

http://imgur.com/A9psleM

0 个答案:

没有答案