关闭当前页面的方法在C#关闭当前页面(借道JavaScript) 中思考过。但是我在面对window.showModalDialog()弹出页面中使用的时候却失效了,相当恼火郁闷。
从网上查找,了解到Window.ShowModalDialog使用手册 ,但是没有我的情况的描述。只有做一些测试页面找原因。从页面TestOpenWindow.htm中打开一个窗口,新窗口OpenWindow.aspx有3个按钮,分别是用javascript关闭,回送服务器关闭,回送服务器不关闭。
代码如下:
![](https://i-blog.csdnimg.cn/blog_migrate/34031c708bfe702fe82d01ff5c6593aa.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/34031c708bfe702fe82d01ff5c6593aa.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4fd96b3cf02f4c7b5c8964ac8167f7af.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/34031c708bfe702fe82d01ff5c6593aa.gif)
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="btnCancel" runat="server" Text="取消(回送服务器后关闭)" OnClick="btnCancel_Click1"/>
<asp:Button ID="btnCancel2" runat="server" Text="取消(回送服务器不关闭)" OnClick="btnCancel_Click3"/>
<input id="btnCancel1" type="button" value="取消(JavaScript)" onclick="window.close()" />
</div>
</form>
</body>
![](https://i-blog.csdnimg.cn/blog_migrate/34031c708bfe702fe82d01ff5c6593aa.gif)
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnCancel_Click1(object sender, EventArgs e)
{
Response.Write("<script>window.opener=null;window.close();</script>");
}
protected void btnCancel_Click3(object sender, EventArgs e)
{
btnCancel2.Text = "已回送服务器";
}
测试结果是只有用JavaScript关闭才能正常退回到父页面,原因是当想服务器postback后,回发的页面不会在showmodeldialog的页面中显示,而是新开一个页面,所以在C#中也只能关闭回发的页面,而不是当前showmodeldialog的页面。