我使用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) { });
}
这是数据对象的样子