在尝试更新应用程序的信誉字段时,我一直收到400错误请求。它应该做的是在信誉增加或减少后保存价值。它识别帖子的ID,因此不应该成为问题。请注意,我对AngularJS很新,所以我可能很容易,但我不知道。
这是后端:
// PUT api/Post/5
public IHttpActionResult PutPost(int id, Post post)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
if (id != post.pid)
{
return BadRequest();
}
db.Entry(post).State = EntityState.Modified;
try
{
db.SaveChanges();
}
catch (DbUpdateConcurrencyException)
{
if (!PostExists(id))
{
return NotFound();
}
else
{
throw;
}
}
return StatusCode(HttpStatusCode.NoContent);
}
功能:
$scope.increment = function (post) {
post.reputation += 1;
Post.update({ id: post.pid });
}
工厂:
droppeApp.factory('Post', function ($resource) {
return $resource('/api/Post/:id', { id: '@id' }, {
update: { method: 'PUT' },
delete: { method: 'DELETE' }
});
});
视图中的项目:
<span class="decrease right" ng-click="decrease(post);">-</span>
<span class="increment right" ng-click="increment(post);">+</span>
答案 0 :(得分:1)
我相信您希望将资源对象本身作为Post.update
的第二个参数传递:
Post.update({id: post.id}, post);
post.update();
查看$resource文档,然后向下滚动到有关创建自定义放置请求的内容。