AJAX для DeleteUser и _PartialView возвращает странный HTML - PullRequest
0 голосов
/ 12 июня 2019

У меня есть 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 и просто удалить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...