如何在angularjs和asp.net webAPI中创建方法更新用户

如何在angularjs和asp.net webAPI中创建方法更新用户,angularjs,asp.net-web-api,asp.net-identity,Angularjs,Asp.net Web Api,Asp.net Identity,我有一个crud的用户,函数添加和删除作品,但编辑方法不工作,这是我的代码。这个错误 ---: Failed to load http://localhost:14539/api/Users: Response for preflight has invalid HTTP status code 405.-------------------------------------------------------------------- 使用的代码: $scope.userEdit = fu

我有一个crud的用户,函数添加和删除作品,但编辑方法不工作,这是我的代码。这个错误

---: Failed to load http://localhost:14539/api/Users: Response for preflight has invalid HTTP status code 405.--------------------------------------------------------------------
使用的代码:

$scope.userEdit = function () {
    console.log('edit');
    var idsForEdit = [];
    angular.forEach($scope.listeOfUsers, function (item,$uibModalInstance, index) {
        console.log($scope.listeOfUsers);
        if (item.checked) {
            console.log(item.checked);
            console.log(item);
           // idsForEdit.edit(item);
            $scope.registration.Email=item.Email;
            $scope.registration.Password=item.PasswordHash;
            $scope.registration.Users_Role=item.Role;
            $scope.registration.Site=item.Site;
            $scope.ok = function () {
                console.log("ok");
                $scope.user=item;
                console.log($scope.user);

                User.Update({
                        id: item.Id
                    }, function (response) {
                        console.log(response);
                        console.log("ok");
                        SweetAlert.swal({
                            title: "Opération effectuée avec succès!",
                            text: "Click pour quitter!",
                            type: "success"
                        });
                        $state.go($state.current, $stateParams, {
                            reload: true,
                            inherit: false,
                            notify: true
                        });
                        $uibModalInstance.close();
                    },
                    function (err) {
                    });


                console.log($scope.user);

            };
        }
    });
    //$scope.isEditDirty==true;
};
和这个user.controller:

[ResponseType(typeof(void))]
// [HttpPut]
[AcceptVerbs("OPTIONS")]
public IHttpActionResult PutUsers(string id, Users users)
{
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }

    if (id != users.Id)
    {
        return BadRequest();
    }

    db.Entry(users).State = EntityState.Modified;

    try
    {
        db.SaveChanges();
    }
    catch (DbUpdateConcurrencyException)
    {
        if (!UsersExists(id))
        {
            return NotFound();
        }
        else
        {
            throw;
        }
    }

    return StatusCode(HttpStatusCode.NoContent);
}

由于控制器方法设置为接受
OPTIONS
请求,而不是
PUT
请求,因此您得到的是HTTP 405。

您需要更改循环逻辑。您正在为用户列表中的每个项目设置
$scope
上的值。最终结果是,
$scope
将具有列表中最后一个条目的值。我怀疑这是你想要的。@Jon,是的,但如何更正此问题如何更正此问题,更改请求“选项”?取消注释
/[HttpPut]
并删除
[AcceptVerbs(“选项”)]
我更改了代码,现在问题来了: