/ / Після візуалізації часткового виду HTML код не видаляється - javascript, jquery, ajax, asp.net-mvc, модальний діалог

Після відображення часткового перегляду HTML-код не видаляється - javascript, jquery, ajax, asp.net-mvc, modal-dialog

Я створив перегляд для відображення деяких об'єктів у списку, і кожен рядок має a Delete опції. Існує також кнопка New що створює новий об'єкт (ось приклад - не один з кращих прикладів).

                            New

239523   Element1_Title     Delete
196344   Element2_Title     Delete

Оскільки Delete і Create дії на одній сторінці, я використовую Modal Popups для більш гарного вигляду.

На стороні сервера обидва public ActionResult Create() і public ActionResult Delete() повернення конкретного часткового погляду з конкретним результатом, у моєму випадку return PartialView("_create", result) і return PartialView("_delete", result).

На сторінці "Перегляд" є такі рядки коду, які використовуються для розміщення кожного з часткових видів, які було викликано Ajax.ActionLink.

<!-- This code is from main view. -->

<div class="modal fade" role="dialog" id="modalPopUp">
<div class="modal-dialog" id="modalDialog">
</div>
</div>

<!-- The `New` button has the following code. -->

@Ajax.ActionLink("New", "Create", new object(),
new AjaxOptions { UpdateTargetId = "modalDialog"},
new {data_toggle = "modal", data_target = "#modalPopUp"})


<!-- The list with all elements and the `Delete` button. -->

@foreach (var element in Model.Elements)
{
<tr>
<td> @Html.DisplayFor(modelData => element.Number) </td>
<td> @Html.DisplayFor(modelData => element.Title) </td>
<td> @Ajax.ActionLink("Delete", "Delete",
new {number = element.Number},
new AjaxOptions {UpdateTargetId = "modalDialog"},
new {data_toggle = "modal", data_target = "#modalPopUp"})
</td>
</tr>
}

.

<!-- This code is from a partial view. -->

@{
Layout = null;
}

<div class="modal-content" id="modalContent">
<!-- My popup window content. -->
</div>

Проблема полягає в тому, що я натискаю кнопку New кнопка, спливаюче вікно, код з _create.cshtml відображається. Потім, якщо я залишу вікно та натисніть кнопку Delete кнопка New знову з'являється вікно, оскільки модальний код все ще відображається з мого першого клацання.

Якщо оновити сторінку та натиснути одну Delete для елемента, а потім я його не видаляю, але хочу видалити ще одне, він видалить перший елемент, на якому я натиснув перший.

Це дивно той факт, що я зробив те ж саме 8 місяців тому, і він працював дуже добре. У мене ще є частина цього коду, але вона також не працює.

Отже, все, що я намагаюся зробити, це зробіть, що виданий частковий вигляд (HTML-код для PopUp) буде видалено після закриття вікна PopUp, не після оновлення сторінки, тому я можу привести інший частковий вигляд з іншим вмістом.

я намагався

$("#modalPopUp").on("hidden", function() {
$("modalContent").remove();
}

і він видаляє вміст, коли я закриваю PopUp, але коли я знову натискаю, він взагалі не з'являється, але я не думаю, що це правильне рішення.

Що мені не вистачає?

Дякую!

Відповіді:

0 для відповіді № 1

Немає проблеми з кодом, як Stephen Muecke сказав

Довелося включити jquery.unobtrusive-ajax.js, але на моїй сторінці додатків не було візуалізації для цього сценарію.

Отже, відсутні рядки коду

<!-- In BundleConfig.cs -->

bundles.Add(new ScriptBundle("~/bundles/unobtrusive").Include(
"~/Scripts/jquery.unobtrusive-ajax.js");

<!-- In _Layout.cshtml -->

@Scripts.Render("~/bundles/unobtrusive")

Так само, як і мої сценарії програм, які потрібно включити.

Дякую, Стівен!