关闭当前页面的方法在C#关闭当前页面(借道JavaScript) 中思考过。但是我在面对window.showModalDialog()弹出页面中使用的时候却失效了,相当恼火郁闷。
从网上查找,了解到Window.ShowModalDialog使用手册 ,但是没有我的情况的描述。只有做一些测试页面找原因。从页面TestOpenWindow.htm中打开一个窗口,新窗口OpenWindow.aspx有3个按钮,分别是用javascript关闭,回送服务器关闭,回送服务器不关闭。
代码如下:
<body>
<input id="btnIpenWindow" type="button" value="打开窗口" onclick="OpenWindow()" />
</body>
<script type="text/javascript" language="javascript">
function OpenWindow()
{
var result=window.showModalDialog("OpenWindow.aspx","","dialogHeight:550px;dialogWidth:750px;resizable:no;scroll:no;status:no;help:no");
}
</script>
<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>
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的页面。