1
我知道它之前已經被問過了,而且我已經嘗試瞭解自己(並且失敗了)。因此,這裏是我的代碼:AngularJS WebApi Put - 不工作?
...
$resource("/SWDB/api/admin/users/:id", { id: "@id" },
{
update: {
method: "PUT"
}
}
...
而且
...
return AdminResource.users.update(params).$promise;
...
這是我更新怎麼叫:
$scope.params = {
id: $stateParams.id,
email: $scope.userservice.selectedUser.email,
oldPassword: $scope.oldPassword,
newPassword: $scope.newPassword,
isLockoutEnabled: $scope.userservice.selectedUser.lockoutEnabled
};
$scope.userservice.updateUser($scope.params)
.then(function() { $state.go("/"); }, function(error) { console.log(error) });
最後,這是我的控制器方法:
public async Task<HttpResponseMessage> Put(string id, string email,
string oldPassword, string newPassword, bool isLockoutEnabled)
{
var user = await _owinManager.UserManager.FindByIdAsync(id);
if (user != null)
{
user.Email = email;
if (!string.IsNullOrEmpty(oldPassword))
{
if (_owinManager.UserManager.PasswordHasher.HashPassword(oldPassword) == user.PasswordHash)
{
if (!string.IsNullOrEmpty(newPassword))
{
user.PasswordHash = _owinManager.UserManager.PasswordHasher.HashPassword(newPassword);
}
}
}
var result = await _owinManager.UserManager.UpdateAsync(user);
if (result.Succeeded)
{
return new HttpResponseMessage(HttpStatusCode.Accepted);
}
}
return new HttpResponseMessage(HttpStatusCode.InternalServerError);
}
我一直得到:405,不允許。我試過POST,同樣的事情。我的猜測是我正在發出一個錯誤的電話......我只是不知道錯誤在哪裏:(
我會通過一個模型,而不是單一的參數 - 這種方式,您可以利用Web API模型結合 –
。我只是這樣做,它的工作 - 顯然是有約束力的作品,而單參數不。我的猜測是,棱角發送params作爲JSON,這有助於? –