Пытаюсь вызвать модальное окно с помощью ajax запроса но есть проблема. Окно по нажатию на кнопку вызывается только со 2 раза и после не закрывается и нечего с ним не сделаешь. Вот мой код: Код основного вью с которого вызывается модалка:
@{
ViewBag.Title = "Index";
}
@model IEnumerable<AjaxTest.Models.Book>
<h2>Каталог книг</h2>
<input id="modShow" type="submit" value="Добавить" data-toggle="modal" data-target="#mod" />
<div id="result"></div>
<body>
<div>
<table id="tab" class="table" table-bordered>
<thead>
<tr>
<th>Название</th>
<th>Автор</th>
<th>Цена</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(i => item.Name)
</td>
<td>
@Html.DisplayFor(i => item.Author)
</td>
<td>
@Html.DisplayFor(i => item.Price)
</td>
</tr>
}
</tbody>
</table>
</div>
</body>
<h2>Список пользователей</h2>
<body>
<div>
<table class="table" table-bordered>
<thead>
<tr>
<th>Имя</th>
<th>Фамилия</th>
<th>Возраст</th>
</tr>
</thead>
<tbody>
@foreach (var item in ViewBag.Users as List<AjaxTest.Models.User>)
{
<tr>
<td>
@Html.DisplayFor(i => item.Name)
</td>
<td>
@Html.DisplayFor(i => item.Surname)
</td>
<td>
@Html.DisplayFor(i => item.Age)
</td>
</tr>
}
</tbody>
</table>
</div>
</body>
@section scripts{
<script type="text/javascript">
$('#btnAdd').on('click', function () {
$.ajax({
type: "POST",
url: "/Home/Create",
data: {
"Name": $('#txtName').val(),
"Author": $('#txtAuthor').val(),
"Price": $('#txtPrice').val()
},
success: function (data) {
$('#tab tbody').append(data);
}
});
});
$('#result').on('hidden.bs.modal', function () {
$('#result').remove();
});
$('#modShow').on('click', function () {
$.ajax({
type: "POST",
url: "/Home/ModalCreate",
success: function (data) {
$('#result').html(data);
}
});
});
</script>
}
Код контроллера:
[HttpPost]
public ActionResult ModalCreate()
{
return PartialView();
}
Код частичного представления с модалкой:
<div id="mod" class="modal fade" >
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<h4 class="modal-title">Новая книга</h4>
</div>
<div class="modal-body">
<table>
<tr>
<td><p>Название</p></td>
<td><input type="text" id="txtName" /></td>
</tr>
<tr>
<td><p>Автор</p></td>
<td><input type="text" id="txtAuthor" /></td>
</tr>
<tr>
<td><p>Цена</p></td>
<td><input type="text" id="txtPrice" /></td>
</tr>
</table>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Закрыть</button>
<button id="btnAdd" type="submit" data-dismiss="modal" class="btn btn-primary">Добавить</button>
</div>
</div>
</div>
</div>
Подскажите пожалуйста что я делаю не так?
Добавил кнопку для отображения модалки и изменил ту которая раньше этим занималась, вот их код:
<input id="modRender" type="submit" value="Добавить" />
<button style="display: none" id="modShow" data-toggle="modal" data-target="#mod"></button>
Теперь одна кнопка выводит partial view на страницу а вторая вызывает модальное окно. Ещё само собой изменённый код ajax запроса который всё это вызывает и метод удаляющий объект.
$('#result').on('hidden.bs.modal', function () {
$('#result*').remove();
});
$('#modRender').on('click', function () {
$.ajax({
type: "POST",
url: "/Home/ModalCreate",
success: function (data) {
$('#result').html(data);
$('#modShow').click();
}
});
});
Получается когда срабатывает событие закрытия модального окна, я удаляю всё что находится в div с id result. А потом заного окно не вызывается, что я делаю не так подскажите пожалуйста?
Непонятный вызов модалки через $('#modShow').click(); попробуй так
success: function (data) {
$('#result').html(data);
$('#mod').modal('show');
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как сделать фиксированный скролл сайдбара по аналогии с тем, как это сделано на vistaprint?
Знаю такой вопрос уже есть в англоязычной stackoverflowНо мне не помогло ответ