400(错误请求) - 更新AngularJS中的值时

时间:2014-12-31 14:22:57

标签: .net angularjs http asp.net-web-api

在尝试更新应用程序的信誉字段时,我一直收到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>

1 个答案:

答案 0 :(得分:1)

我相信您希望将资源对象本身作为Post.update的第二个参数传递:

Post.update({id: post.id}, post);
IIRC你也应该能够做到:

post.update();

查看$resource文档,然后向下滚动到有关创建自定义放置请求的内容。