У меня есть table
из AllUsers, и я хочу асинхронно удалить пользователя, используя AJAX
Я смог сделать AJAX
с create user
, поэтому я попытался сделать то же самое с delete user
, в конце концов, они получили то же самое partial
.
Это мой partial
view
@inject HotelManagement.Services.Wrappers.Contracts.IUserManagerWrapperUserManager
@model UserViewModel
@{
ViewData["Title"] = "_UserPartialView";
}
<tr class="deleteUserRow" id="user-tr-@Model.Id">
<td>@Model.UserName</td>
<td>@Model.Email</td>
<td class="roleofUser">@await UserManager.GetRole(Model.UserName)</td>
<td>
<a class="btn btn-success btn-sm promote-toggler" data-target="#MyModal2" data-toggle="modal" att="@Model.Id"
asp-area="Administration" asp-controller="Admin" asp-action="PromoteUser" asp-route-id="@Model.Id">
<i class="fas fa-pencil-alt"></i>
Promote user
</a>
<div class="col-sm-2" style="margin-top:5%"></div>
<button class="btn btn-danger btn-sm delete-user-button" att="@Model.Id">
<i class="fa fa-trash"></i> Delete user
</button>
</td>
</tr>
<span id="anti-forgery-span">@Html.AntiForgeryToken()</span>
Это мой Controller
:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Delete(string userId)
{
if (this.ModelState.IsValid)
{
var user = await _userManager.FindByIdAsync(userId);
await _userManager.DeleteAsync(user);
_logger.LogInformation("User deleted.");
var userViewModel = new UserViewModel
{
Email = user.Email,
UserName = user.UserName
};
return PartialView("_UserPartialView", userViewModel);
}
return this.View();
}
А это мой сценарий:
$('.delete-user-button').on('click', function (deleteUserEvent) {
confirm("Are you sure you want to delete this user?");
var $this = $(this);
var idOfUserToDelete = $this.attr('att');
var antiForgery = ($('#anti-forgery-span').find('input'))[0];
var postData = "userId=" + idOfUserToDelete + "&" + antiForgery.name +
"=" + antiForgery.value;
$.post("/Account/Delete", postData)
.done(function (dataResponse) {
toastr.options.onHidden = function () {
// window.location.reload();
};
toastr.options.timeOut = 100;
toastr.options.fadeOut = 100;
toastr.success(dataResponse);
$("#table").remove(dataResponse);
}).fail(function (dataResponse) {
console.log(dataResponse);
debugger;
console.log('we got an error');
toastr.error("User deletion failed");
});
});
Я получаю Object
с response header
, который является массивным. Моя идея состояла в том, чтобы получить table row
с delete user
и просто удалить его.