1

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>
4

0 に答える 0