Implementing SweetAlert Confirmation for Deletion in ASP.NET Core MVC

Answered using OpenAI o1 mini by OpenAI o1

Question:

у меня есть метод в контроллере

    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Delete(int id)
    {
      var contractor = await _contractorRepository.AsReadOnlyQueryable()
          .FirstOrDefaultAsync(c => c.ContractorId == id);

      if (contractor != null)
      {
        _contractorRepository.Delete(contractor);
        await _unitOfWork.SaveChangesAsync();
        SetSuccessToast("Удалён успешно", "bg-success");
        TempData["DisplayToast"] = true;
      }

      return RedirectToAction(nameof(Index));
    }

мне нужно настроить водтверждение для удаления при помощи sweetalert или аналога для asp.net core mvc

Answer:

Для добавления подтверждения удаления с использованием SweetAlert в ASP.NET Core MVC, вам нужно будет внести изменения в представление, где вы вызываете метод удаления. Вот шаги, которые вам нужно выполнить:

  1. Подключите SweetAlert: Убедитесь, что вы подключили библиотеку SweetAlert в вашем проекте. Вы можете добавить её через CDN в ваш _Layout.cshtml или в конкретное представление.
<!-- Подключение SweetAlert через CDN -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.js"></script>
  1. Измените представление: В вашем представлении, где вы отображаете список подрядчиков (например, в Index.cshtml), добавьте кнопку или ссылку для удаления с обработчиком события onclick, который будет вызывать SweetAlert.

Пример кода для кнопки удаления:

@foreach (var contractor in Model)
{
    <tr>
        <td>@contractor.Name</td>
        <td>
            <button class="btn btn-danger" onclick="confirmDelete(@contractor.ContractorId)">Удалить</button>
        </td>
    </tr>
}

<script>
    function confirmDelete(contractorId) {
        swal({
            title: "Вы уверены?",
            text: "Вы не сможете восстановить это!",
            icon: "warning",
            buttons: true,
            dangerMode: true,
        })
        .then((willDelete) => {
            if (willDelete) {
                // Если пользователь подтвердил, перенаправляем на метод удаления
                window.location.href = '@Url.Action("Delete", "YourControllerName")/' + contractorId;
            } else {
                swal("Удаление отменено!");
            }
        });
    }
</script>
  1. Обновите метод Delete: Убедитесь, что ваш метод Delete в контроллере принимает параметр id и работает корректно, как вы уже сделали.

  2. Проверьте работу: Запустите ваше приложение и проверьте, что при нажатии на кнопку "Удалить" появляется окно подтверждения. Если пользователь подтверждает, он будет перенаправлен на метод удаления.

Теперь у вас есть подтверждение удаления с использованием SweetAlert в вашем ASP.NET Core MVC приложении.