Как вызвать метод удаления в веб-API из sweet-alert в MVC-5? - PullRequest
0 голосов
/ 26 октября 2018

Я хочу вызвать метод удаления в веб-API из моего приложения MVC-5, используя запрос Ajax в sweet-alert.После нажатия кнопки удаления, когда пользователь подтвердит удаление этой конкретной записи в sweet-alert, должен быть вызван метод удаления API.Однако код не вызывает метод.У меня есть следующий код на моем внешнем интерфейсе:

$('#dtusers tbody').on('click', '#btnDeleteRecord', function () {
                var userId = $(this).attr("data-userid").valueOf();
                var details = userTable.row($(this).parents('tr')).data();     
                swal({
                    title: "Are you sure?",
                    text: "Delete " + details[0] + " " + details[1] + "?",
                    type: "warning",
                    showCancelButton: true,
                    confirmButtonColor: "#DD6B55",
                    confirmButtonText: "Yes",
                    closeOnConfirm: true
                },
                function (isConfirm) {
                    if (isConfirm) {
                        $.ajax({
                            url: serviceUrl + "/api/account/deletedata",
                            method: 'DELETE',
                            data: { userId: userId },
                            success: function () {
                            }
                        });
                    }
                });
        });

Метод удаления веб-API, который я хочу вызвать, находится здесь:

[HttpDelete]
    [Route("deletedata")]
    public IHttpActionResult DeleteData(string userId)
    {
        if(userId == null)
        {
            return BadRequest("No data deleted");
        }

        DBAccess dblayer = new DBAccess();
        dblayer.DeleteData(userId);

        return Ok();
    }

Я не получаю никаких ошибок при отладкекод переднего конца и все же, он не вызывает внутренний метод.Есть ли какие-либо проблемы в моем коде, помимо моих знаний, которые препятствуют вызову.Или дайте мне знать об идеальном способе вызова моего метода удаления через веб-API, передав UserId для удаления указанной записи из базы данных.

Есть ли какое-либо подходящее решение для этого?Или как я могу улучшить метод удаления веб-API, вызываемый из Ajax?

1 Ответ

0 голосов
/ 27 октября 2018

При попытке доступа к вызову Delete API должна быть какая-то ошибка. Вы пытались запустить Fiddler или Postman?Если вы получаете Ошибка 405 - методы не разрешены , то это должно быть проблемой с WebDAVModule , который по умолчанию отключает методы запросов PUT и DELETE.Чтобы заставить его работать, вам нужно изменить эти значения по умолчанию или отключить его для всего веб-приложения.

В вашем web.config

<system.webServer>
  <modules runAllManagedModulesForAllRequests="false">
    <remove name="WebDAVModule" />
  </modules>
</system.webServer>

Если проблема не устранена, я предлагаюизменить HttpVerb на POST для обработки данных удаления.

function (isConfirm) {
                    if (isConfirm) {
                        $.ajax({
                            url: serviceUrl + "/api/account/deletedata",
                            method: 'POST',
                            data: { userId: userId },
                            success: function () {
                            }
                        });
                    }
                });

[HttpPost]
    [Route("deletedata")]
    public IHttpActionResult DeleteData(string userId)
    {
        if(userId == null)
        {
            return BadRequest("No data deleted");
        }

        DBAccess dblayer = new DBAccess();
        dblayer.DeleteData(userId);

        return Ok();
    }
...