У меня есть страница cshtml с этим кодом:
<form action='@Url.Action("ExportExcel", "Records")' method = "post" target = "_blank" onsubmit = "return exportExcel(), true">
<input type = "hidden" name = "filteredRecordsIds" id = "filteredRecordsIds" value = "" />
<input id = "btnExportExcel" type = "submit" hidden = "hidden" />
</form>
в js функция exportExcel:
function exportExcel() {
$('#filteredRecordsIds').val(filteredRecords.map(function (record) { return record.Id }));
return true;
}
в записях контроллера:
public ActionResult ExportExcel(string filteredRecordsIds)
{...}
Я хотел бы добавить модальное/всплывающее окно перед отправкой, которое спросит пользователя:
"Хотите экспортировать с вычислениями?" с двумя вариантами кнопок: «Да» или «Нет».
В зависимости от ответа пользователя я хотел бы отправить ответ контроллеру (в качестве второго параметра).
Как я могу добавить это?
Спасибо!
Спасибо. Можете ли вы дать мне / сослаться на пример? Спасибо



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете попробовать удалить onsubmit и использовать кнопку для открытия модального окна, а затем вызывать exportExcel при нажатии кнопки «Да»:
<form action='@Url.Action("ExportExcel", "Records")' method = "post" target = "_blank" id = "myForm">
<input type = "hidden" name = "filteredRecordsIds" id = "filteredRecordsIds" value = "" />
<input id = "btnExportExcel" type = "button" value = "submit" data-toggle = "modal" data-target = "#exampleModalLong"/>
</form>
<!-- Modal -->
<div class = "modal fade" id = "exampleModalLong" tabindex = "-1" role = "dialog" aria-labelledby = "exampleModalLongTitle" aria-hidden = "true">
<div class = "modal-dialog" role = "document">
<div class = "modal-content">
<div class = "modal-header">
<h5 class = "modal-title" id = "exampleModalLongTitle">Modal title</h5>
<button type = "button" class = "close" data-dismiss = "modal" aria-label = "Close">
<span aria-hidden = "true">×</span>
</button>
</div>
<div class = "modal-body">
Would you like to export with calculations?
</div>
<div class = "modal-footer">
<button type = "button" class = "btn btn-primary" onclick = "exportExcel()">Yes</button>
<button type = "button" class = "btn btn-secondary" data-dismiss = "modal">No</button>
</div>
</div>
</div>
</div>
js (отправьте форму в exportExcel):
function exportExcel() {
$('#filteredRecordsIds').val(filteredRecords.map(function (record) { return record.Id }));
$("#myForm").submit();
}
Если вы хотите предотвратить немедленную связь с сервером при отправке, вы должны использовать AJAX, вам нужно избавиться от атрибута действия, использовать
preventDefaultпри отправке и управлять связью внутри пользовательской функции AJAX. Вы можете использовать простойprompt, чтобы запросить подтверждение у пользователя, или настраиваемое модальное окно, созданное в html/css/js.