【问题标题】:How to close a modal window after a save in Asp.NET WebForms如何在 Asp.NET WebForms 中保存后关闭模式窗口
【发布时间】:2013-09-10 09:40:19
【问题描述】:

我的主页上有一些 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 页面的 head 部分放置了以下内容:

<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()";但是在执行保存后都没有成功关闭模态窗口。

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

【问题讨论】:

  • 我并不是说这是一个坏主意,我不知道你需要做什么,但我建议你不要制作适用于实际浏览器窗口的弹出窗口,但是而是让浮动的div 元素出现在其他事物之上,仅仅是因为某处的某些浏览器(我说的是ChromeFirefox 等)很可能会与您的实验有很大不同在 IE 上开发应用程序时(例如:他们不会首先出现弹出窗口)
  • 感谢您的建议。这是一些遗留系统,它在整个地方都用于一个只能在 Internet Explorer 中查看的内部站点。我确信其中有很多事情没有正确完成,但不幸的是,现在重新设计它不是优先事项:)

标签: c# javascript asp.net webforms


【解决方案1】:

你为什么不在这里注册一个脚本,像这样:

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();");
    }
}

【讨论】:

  • 感谢您的回复。我尝试用这个替换我的代码,但它似乎也不起作用。它在调试器中命中它,但窗口没有在它之后关闭。
  • 对不起,我错过了 ModalDialog,我认为这是一件不容易的事情,但你可以试试这个帖子,也许它会起作用:sharepoint.stackexchange.com/questions/43569/…
  • 谢谢。我试过了。现在虽然它崩溃并出现以下错误:“JavaScript 运行时错误:无法获取未定义或空引用的属性 'commitPopup'”。
猜你喜欢
  • 2014-11-28
  • 1970-01-01
  • 2013-10-31
  • 1970-01-01
  • 1970-01-01
  • 2020-04-16
  • 1970-01-01
  • 2018-06-29
  • 2022-06-30
相关资源
最近更新 更多