2 つのモーダル ポップアップがあります。ポップアップ 1 が表示され、データセットの詳細が表示されます。データを編集するには、リンクを使用して別の popup(2) を開きます。ポップアップ 2 が閉じているときはいつでも、ポップアップ 1 のコンテンツを更新したいと考えています。
ページ (index.aspx) -> popup1 (partial.ascx) -> popup2 (partial2.ascx)
ポップアップ 1 の更新を除いて、すべて正常に動作します。
私はjavascriptとjqueryに非常に慣れていないため、これを達成する方法についての手がかりがありません. 私はすでに location.reload と opener.reload を試しましたが、ページ全体をリロードするだけです....
これが私のコードです:
ポップアップ 1 の表示:
`<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Change_Request.ViewModels.CheckOfMeasuresViewModel>" %>
<% using (Ajax.BeginForm(new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "CheckOfMeasuresITDialog" }))
{ %>
<%: Html.ValidationSummary(true) %>
<div id="accordion">
<h3>
<a href="#" style="margin-left: 20px;">Details</a></h3>
<div>
<div>
<%: Html.ActionLink("Add Measure", "Create", "Measure", new { id = Model.ChangeRequestID, nextView = "./../ChangeRequest2/Partial/_CheckOfMeasuresIT" }, new { @class = "openMeasureDialog", data_dialog_id = "CreateMeasureDialog", data_dialog_title = "Add Measure" })%>
</div>
<%: Html.HiddenFor(model => model.ChangeRequestID) %>
<div class="display-field">
<table>
<tr>
<th>
Submit Date
</th>
</tr>
<% foreach (var item in Model.measures) %>
<%{ %>
<tr>
<td>
<%: Html.DisplayFor(modelItem => item.submitDate) %>
</td>
</tr>
<%} %>
</table>
</div>
<table style="width: 95%; margin-top: 10px;">
<tr>
<td>
<div class="editor-label">
<%: Html.LabelFor(model => model.allMeasuresCompletedIT) %>
</div>
</td>
<td colspan="3">
<div class="editor-field">
<%: Html.EditorFor(model => model.allMeasuresCompletedIT) %>
<%: Html.ValidationMessageFor(model => model.allMeasuresCompletedIT) %>
</div>
</td>
</tr>
...
</table>
</div>
</div>
<fieldset>
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
<% } %>`
両方のポップアップの Javascript:
$(function () {
$("#accordion").accordion({ active: 0 });
});
$.ajaxSetup({ cache: false });
$(document).ready(function () {
$(".openMeasureDialog").live("click", function (e) {
e.preventDefault();
$("<div></div>").addClass("MeasureDialog").attr("id", $(this).attr("data-dialog-id")).appendTo("body").dialog({
title: $(this).attr("data-dialog-title"), close: function () {
$(this).remove()
},
position: ["middle", 20],
resizable: false,
modal: true,
width: 850,
maxheigth: 800,
midth: 'auto'
}).load(this.href);
});
$(".close").live("click", function (e) {
e.preventDefault();
$(this).closest(".MeasureDialog").dialog("close");
location.reload(true);
});
});
ポップアップ 2 のコントローラー:
[HttpPost]
public ActionResult Create(MeasureViewModel _measure, string nextView)
{
Measure m = new Measure();
if (ModelState.IsValid)
{
db.Measures.Add(m);
db.SaveChanges();
if (Request.IsAjaxRequest())
return PartialView("Partial/_CloseDialog");
return RedirectToAction("Index");
}
ViewBag.ChangeRequestID = new SelectList(db.ChangeRequests, "ChangeRequestID", "initiator", _measure.ChangeRequestID);
if (Request.IsAjaxRequest())
return PartialView("Partial/_Create", _measure);
return View(_measure);
}
ポップアップ 2 を閉じるための部分:
<script type="text/javascript">
$(".MeasureDialog").dialog("close");
</script>