bootstrap модальное окно не закрывается сразу после нажатия кнопки «Да» - PullRequest
1 голос
/ 13 апреля 2020

У меня есть модальное окно bootstrap, которое я использую в своем приложении ASP. NET MVC. Это модальное окно параметризовано, я могу указать заголовок и текст сообщения.

Ниже находится модальное окно, MyConfirmModalDialog.cs html:

<div class="modal fade" id="confirmModalDialog" tabindex="-1" role="dialog" aria-labelledby="modalCenterTitle" aria-hidden="true" 
     style="padding:0px;margin-left:0px;left:42%;min-width:15%">
    <div class="modal-dialog modal-dialog-centered" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="modalTitle">Modal title</h5>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close" 
                        style="margin-top:-30px">
                    <span aria-hidden="true">&times;</span>
                </button>
            </div>
            <div class="modal-body">
                Modal body
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-dismiss="modal" id="confirmCancel">No</button>
                <button type="button" class="btn btn-primary" id="confirmOk">Yes</button>
            </div>
        </div>
    </div>
</div>

Это модальное окно находится в другом представлении используя razor helper:

@Html.Partial("MyConfirmModalDialog");

Затем я использую его, как показано ниже, чтобы показать его пользователю:

showConfirmation = function (title, message, success, cancel) {
    var modal = $("#confirmModalDialog");
    modal.find(".modal-title").html(title).end()
         .find(".modal-body").html(message).end()
         .modal({ backdrop: 'static', keyboard: false });

    var fClose = function () {
        modal.modal("hide");
    };

    modal.modal("show");

    $("#confirmOk").unbind().one('click', success).one('click', fClose);
    $("#confirmCancel").unbind().one("click", fClose);
};

function onPerformActions() {
    var title = "Warning";
    var message = "Do you wish to continue?";

    var success = function () {
        performActions();
    };

    var cancel = function () {
        // Do nothing
    };

    showConfirmation(title, message, success, cancel);
}

Если пользователь нажимает кнопку «Да», из функции успеха я вызываю Метод peformActions, как показано выше, код. Ниже метод executeActions, в основном in, выполняет ajax асинхронный вызов действия в контроллере:

function performActions()
{
           $.ajax({
                url: '@Url.Action("DoActions", "MyController", new { area = "MyArea" })',
                type: "POST",                
                async: true,
                success: function (resp) {
                    // Do some things on success       
                },
                error: function () {
                    // Do some things on error
                }
            });
}

Проблема, с которой я столкнулся, заключается в том, что модальное окно закрывается не сразу, когда пользователь нажимает кнопку «Да», это занимает несколько секунд, а затем это модальное окно перекрывается со следующим модальным окном, которое впоследствии отображается в процессе.

...