我有一个类似的模型类(从EF生成):
public partial class Point
{
public int Id { get; set; }
public int First { get; set; }
public int Second { get; set; }
public int Total { get; set; }
}
和我的控制器(ApiController)中的Post方法(从Angular调用),如下所示:
[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
返回到Angular的POST
来电。
Angular post-method看起来像这样:
this.post = function (Point) {
var request = $http({
method: "post",
url: "/api/PointsAPI",
data: JSON.stringify(Point)
});
return request;
}
我如何仅返回Total
对象的points
属性?
答案 0 :(得分:0)
它将为空,因为您正在返回原始数据类型。你的Total属性只是一个数字,所以当angular解析响应时,它期望一个对象,它所看到的只是" 2" (如果你的总数是2)。因此,将它包装在一个对象中,angular将能够解析它。
return CreatedAtRoute("DefaultApi", new { id = points.Id }, new { points.Total });
这将在您的身体中返回{ "Total" : 2 }
。现在,angular将拥有一个具有Total属性的对象。