2015-06-18 3 views
0

У меня есть класс модели, как так (сгенерированный от EF):Как вернуть собственность с IHttpActionResult в Web API

public partial class Point 
{ 
    public int Id { get; set; } 
    public int First { get; set; } 
    public int Second { get; set; } 
    public int Total { get; set; } 
} 

и метод Post (который вызывается из Угловых) в моем контроллере (ApiController) как так:

[ResponseType(typeof(Point))] 
    public IHttpActionResult PostPoint(Point points) 
    { 
     if (!ModelState.IsValid) 
     { 
      return BadRequest(ModelState); 
     } 

     points.Total = points.First + points.Second; 

     db.ScoreBoard.Add(points); 

     db.SaveChanges(); 

     return CreatedAtRoute("DefaultApi", new { id = points.Id }, points); 
    } 

Это будет возвращать весь объект points и мой POST вызов будет Response со всеми свойствами этого объекта.

Теперь то, что я хочу сделать, это вернуть только Total собственность и поэтому я попытался изменил возвращение PostPoint к:

return CreatedAtRoute("DefaultApi", new { id = points.Id }, points.Total); 

Делая это, однако, вернет пустой Response к POST вызова от Угловой.

Угловой пост-метод выглядит следующим образом:

this.post = function (Point) { 
    var request = $http({ 
     method: "post", 
     url: "/api/PointsAPI", 
     data: JSON.stringify(Point) 
    }); 
    return request; 
} 

Как бы я идти о возврате только Total свойство points объекта?

ответ

0

Он будет пустым, потому что вы возвращаете примитивный тип данных. Ваше свойство Total - всего лишь число, поэтому, когда угловой анализирует ответ, который он ожидает от объекта, и все, что он видит, равно «2» (если ваш Total равен 2). Таким образом, оберните его в объект, и угловые смогут его проанализировать.

return CreatedAtRoute("DefaultApi", new { id = points.Id }, new { points.Total }); 

Это вернет { "Total" : 2 } в ваше тело. Теперь угловой будет иметь объект с полным свойством.

+0

Благодарим за объяснение! Теперь это имеет смысл. –

Смежные вопросы