繁体   English   中英

在Asp.NET WebForms中保存后如何关闭模式窗口

[英]How to close a modal window after a save in Asp.NET WebForms

我的主页上有一些JavaScript代码,当单击链接时会打开一个弹出窗口:

<script language="javascript">  

function OpenResidentialAddressWin(subscriberContactRelationGid, routeId, btn) {
    window.showModalDialog("SubscriberResidentialAddress.aspx" + BuildQueryStringValuesForSubscriber(subscriberContactRelationGid, routeId, returntxtReceiptDate().value), this, strWindowFeatures + ";scroll:no;dialogWidth:442px;dialogHeight:350px");
    location.href = location.href;
}

</script>

因此,以上代码在模式窗口中打开了页面SubscriberResidentialAddress.aspx(以及将许多变量传递到此页面中)

现在,此页面的排列方式使其可以显示或编辑信息。 (这些在单独的div中显示或隐藏,取决于在窗口中刚刚按下的按钮)。

当前,在用户保存页面上的信息后,它将切换到显示模式。 相反,我想完全关闭模式窗口并重新加载主页。

一位同事建议我在模式窗口的aspx页面上使用文字控件,并在成功保存后将javascript写入该控件。 因此,我将以下内容放置在SubscriberResidentialAddress.aspx页的头部:

<asp:Literal runat="server" ID="litCloseWind"></asp:Literal>

然后在执行保存时调用的函数后面的代码中

  protected void btnAddSave_Click(object sender, EventArgs e)
{

////// code related to saving

 if (status.IsSuccessful)
            {
                litCloseWind.Text = "<script>this.close()</script>";
                Response.Redirect(Request.Url.AbsoluteUri, false);
            }


}

我已经尝试了上述方法,而且litCloseWind.Text =“ window.close()”; 但是执行保存后,没有一个成功关闭模态窗口。

这个计划在逻辑上是否合理,我只是在某个地方犯了错误,还是从一开始就做错了?

您为什么不在这里注册脚本,像这样:

ClientScript.RegisterStartupScript(typeof(Page), "CLOSEWINDOW", "window.close();");

无需在此处放置任何文字控制。

因此,您的代码将如下所示:

protected void btnAddSave_Click(object sender, EventArgs e)
{
    if (status.IsSuccessful)
    {
        ClientScript.RegisterStartupScript(typeof(Page), "CLOSEWINDOW", "window.close();");
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM