У меня есть модальное окно 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">×</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
}
});
}
Проблема, с которой я столкнулся, заключается в том, что модальное окно закрывается не сразу, когда пользователь нажимает кнопку «Да», это занимает несколько секунд, а затем это модальное окно перекрывается со следующим модальным окном, которое впоследствии отображается в процессе.