Я створив перегляд для відображення деяких об'єктів у списку, і кожен рядок має 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")
Так само, як і мої сценарії програм, які потрібно включити.
Дякую, Стівен!