如何使用 Unobtrusive Ajax 实现 data-ajax-confirm with sweetalert?

How to implement data-ajax-confirm with sweetalert using Unobtrusive Ajax?

给出这样的形式ajax

<form method="post"
        data-ajax="true" 
        data-ajax-method="post" 
        data-ajax-complete="completed" 
        data-ajax-confirm="Are you sure you want to do this?">
    <input type="text" name="name" /><input type="submit"/>
</form>

我已经设置了 data-ajax-confirm,但是知道如何使用 sweetalert 实现吗?

例子

<script>
swal({
  title: "Are you sure?",
  text: "Once deleted, you will not be able to recover this imaginary file!",
  icon: "warning",
  buttons: true,
  dangerMode: true,
})
.then((willDelete) => {
  if (willDelete) {
    //Submit ajax here
  } else {
    swal("Your imaginary file is safe!");
  }
});

completed = function (xhr) {
            if (xhr.status == "200") {
                swal("Success", xhr.responseText, "success")
                    .then(() => {
                        location.reload();
                    });
            }
            else {
                swal("Error", xhr.responseText, "error")
            }

        };
</script>

如何在提交前用 sweetalert 显示对话框

你可以像下面那样做:

<form method="post"
      id="myform"
      data-ajax="true"
      data-ajax-method="post"
      data-ajax-complete="completed">
    <input type="text" name="name" />
</form>

<input id="submit" type="button" value="submit" />

脚本:

@section scripts{
    <script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/2.1.2/sweetalert.min.js"></script>
    <script src="~/lib/jquery-ajax-unobtrusive/jquery.unobtrusive-ajax.js"></script>
    <script>
        $("#submit").click(function () {
            swal({
                title: "Are you sure?",
                text: "Once deleted, you will not be able to recover this imaginary file!",
                icon: "warning",
                buttons: true,
                dangerMode: true,
            })
                .then((willDelete) => {
                    if (willDelete) {
                        $("#myform").submit();
                    } else {
                        swal("Your imaginary file is safe!");
                    }
                });

            completed = function (xhr) {
                if (xhr.status == "200") {
                    swal("Success", xhr.responseText, "success")
                        .then(() => {
                            location.reload();
                        });
                }
                else {
                    swal("Error", xhr.responseText, "error")
                }
            };
        })
    </script>
}

控制器:

public IActionResult Index()
{
    return View();
}

[HttpPost]
public IActionResult Index(string name)
{
    if(name != null)
    {
        return Ok();
    }
    return NotFound();
}

结果: