以编程方式从后面的代码closuresaspx页面

closures代码隐藏ASPX页面的最佳方法是什么?

我有一个button事件处理程序,我想在用户点击页面上的ASP.NETbutton后closures页面。 我试图以编程方式添加一个JavaScript方法,其中包含一个window.close()命令OnClientClick事件closures该页面,但它不起作用。 该button也是一个AJAX更新面板的asp:AsyncPostBoskTrigger

该应用程序使用.NET Framework 3.5。

你通常会做这样的事情:

 protected void btnClose_Click(object sender, EventArgs e) { ClientScript.RegisterStartupScript(typeof(Page), "closePage", "window.close();", true); } 

但是请记住,在不同的场景中会发生不同的事情。 Firefox不会让你closures一个你没打开的窗口(用window.open()打开)。

IE7会提示用户“这个页面正在尝试closures(Yes | No)”对话框。

无论如何,你应该准备好处理这个并不总是closures的窗口!

上述两个问题的一个解决方法是使用:

 protected void btnClose_Click(object sender, EventArgs e) { ClientScript.RegisterStartupScript(typeof(Page), "closePage", "window.open('close.html', '_self', null);", true); } 

并创build一个close.html:

 <html><head> <title></title> <script language="javascript" type="text/javascript"> var redirectTimerId = 0; function closeWindow() { window.opener = top; redirectTimerId = window.setTimeout('redirect()', 2000); window.close(); } function stopRedirect() { window.clearTimeout(redirectTimerId); } function redirect() { window.location = 'default.aspx'; } </script> </head> <body onload="closeWindow()" onunload="stopRedirect()" style=""> <center><h1>Please Wait...</h1></center> </body></html> 

请注意,如果由于某种原因2秒后窗口不closures,close.html将redirect到default.aspx。

  protected void btnOK_Click(object sender, EventArgs e) { // Your code goes here. if(isSuccess) { string close = @"<script type='text/javascript'> window.returnValue = true; window.close(); </script>"; base.Response.Write(close); } } 

更新:我已经采取了所有的input,并提出了以下解决scheme:

在后面的代码中:

 protected void Page_Load(object sender, EventArgs e) { Page.ClientScript.RegisterOnSubmitStatement(typeof(Page), "closePage", "window.onunload = CloseWindow();"); } 

在aspx页面:

 function CloseWindow() { window.close(); } 

回发是重新加载页面的过程,所以如果你想在回发后closures页面,那么你需要设置你的window.close()javascript在浏览器的onload事件中运行,通常使用ClientScript.RegisterStartupScript()函数。

但是你确定这是你想要做的吗? closures页面往往会激怒用户。

你只需要在你的asp:Button元素中添加这个属性(例如):

 OnClientClick="javascript:window.close();" 

它完美的作品。

您应该注入一个启动脚本,在回发完成后closures页面。

 ClientScript.RegisterStartupScript(typeof(Page), "closePage", "<script type='text/JavaScript'>window.close();</script>"); 

您可以通过简单地将窗口closures代码粘贴到标记中button的OnClientClick事件中来closures窗口

如果您使用RadAjaxManager那么这里是帮助的代码:

 RadAjaxManager1.ResponseScripts.Add("window.opener.location.href = '../CaseManagement/LCCase.aspx?" + caseId + "'; window.close();"); 

closures一个asp.net的Windows应用程序,

  • 只需将一个button拖入devise页面
  • 然后在下面的代码中写下它的click事件

      " this.close(); " 

即:

  private void button2_Click(object sender, EventArgs e) { this.Close(); } 
  protected void Button1_Click(object sender, EventArgs e) { Button1.Attributes.Add("onclick"," CloseWindow();"); } <script type="text/javascript"> function CloseWindow() { window.close(); } </script>