0

送信ボタンのある厳密に型指定されたビューを含むポップアップを作成しました。ユーザーが送信ボタンをクリックすると、ポスト アクション メソッドでデータをデータベースに保存します。データが保存されたときにそのポップアップを閉じて、そのポップアップを開いた元の親ページを表示したいと思います。

以下はコードHomeControllerです

public class HomeController : Controller
{

    public ActionResult SendProduct(string rowId)
    {
        Product objProduct = new Product();
        return View(objProduct);
    }

    [HttpPost]
    public ActionResult SendProduct(Product objProduct)
    {
        return View(objProduct);
    }
}

製品モデル

public class Product
{
    public int ProductId { get; set; }

    [Required]
    public string Name { get; set; }
}

インデックス.chtm

    @{
    ViewBag.Title = "Home Page";
}
@using DevExpress.Web.Mvc.UI
@using DevExpress.Web.ASPxGridView
@using UI.Infrastructure.Resources;
<script type="text/javascript">
    function OnBeginCallback(s, e) {
        e.customArgs["rowId"] = 123;
    }
    function Click() {
        pcSendProduct.PerformCallback();
        if (!pcSendProduct.IsVisible())
            pcSendProduct.Show();
    }
</script>

<a href="javascript:Click()">Enumalate menu click</a>
<div>
   @Html.DevExpress().Button(settings =>
                                   {
                                       settings.Name = "btnSend";
                                       settings.Width = 80;
                                       settings.Text = "Find";
                                       settings.UseSubmitBehavior = false;
                                       settings.ClientSideEvents.Click = string.Format("function(s, e) {{ Click(); }}");
                                   }).GetHtml()
</div>
  @Html.DevExpress().PopupControl(
    settings =>
    {
        settings.Name = "pcSendProduct";
        settings.Width = 1050;
        settings.Height = 550;
        settings.HeaderText = "Plan Customer Interaction";
        settings.CloseAction = DevExpress.Web.ASPxClasses.CloseAction.CloseButton;
        settings.Styles.Header.HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Center;
        settings.Styles.Header.VerticalAlign = System.Web.UI.WebControls.VerticalAlign.Middle;
        settings.Styles.Header.Font.Size = 10;
        settings.Modal = true;
        settings.ShowHeader = true;
        settings.ShowCloseButton = true;
        settings.CloseAction = DevExpress.Web.ASPxClasses.CloseAction.CloseButton;
        settings.Left = 1245;
        settings.Top = 300;
        settings.Styles.ModalBackground.BackColor = System.Drawing.Color.Transparent;
        settings.ContentUrl = Url.Action("PlanCustomerInteraction", "PlanCustomerInteraction");
        settings.ShowLoadingPanel = true;
        settings.ClientSideEvents.BeginCallback = "OnBeginCallback";
        settings.ClientSideEvents.EndCallback = "OnPopupEndCallback"; 
    }).GetHtml()

SendProduct.cshtml

    @model Demo.Models.Product

@{
    ViewBag.Title = "SendProduct";
}

<h2>SendProduct</h2>

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)

    <fieldset>
        <legend>Product</legend>

        @Html.HiddenFor(model => model.ProductId)

        <div class="editor-label">
            @Html.LabelFor(model => model.Name)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Name)
            @Html.ValidationMessageFor(model => model.Name)
        </div>

        <p>
            <input type="submit" value="Save" />
        </p>
    </fieldset>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

したがって、SendProduct POST アクション メソッドでデータを保存した後、Send product ポップアップを閉じたいと思います。

コントローラー アクション メソッドからポップアップ コントロールを閉じる方法を教えてください。</p>

4

1 に答える 1

1

コントローラーはサーバー上で実行され、ポップアップはクライアント上にあるため、クライアント/javascript コードで適切なタイミングでポップアップを閉じるロジックを追加する必要があります。

于 2015-06-17T19:53:09.700 に答える