以编程方式从后面的代码关闭aspx页面

时间:2008-12-17 17:51:20

标签: c# asp.net

从代码隐藏中关闭ASPX页面的最佳方法是什么?

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

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

13 个答案:

答案 0 :(得分:47)

您通常会执行以下操作:

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

但是,请记住,不同的场景会发生不同的事情。 Firefox不允许您关闭未被您打开的窗口(使用window.open()打开)。

IE7将提示用户“此页面正在尝试关闭(是|否)”对话框。

无论如何,你应该准备好处理窗口并不总是关闭!

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

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

并创建一个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秒后窗口没有关闭,close.html将重定向到default.aspx。

答案 1 :(得分:10)

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

        }

答案 2 :(得分:8)

更新:我已经完成了所有输入并提出了以下解决方案:

在代码背后:

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

在aspx页面中:

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

答案 3 :(得分:6)

回发是重新加载页面的过程,因此如果您希望页面在回发后关闭,那么您需要设置window.close()javascript以在回发期间使用浏览器的onload事件运行,通常使用ClientScript.RegisterStartupScript()函数完成。

但你确定这是你想做的吗?关闭页面往往会刺激用户。

答案 4 :(得分:5)

你应该注入一个启动脚本,它将在回发完成后关闭页面。

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

答案 5 :(得分:4)

您只需要在asp:Button元素中添加此属性(例如):

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

效果很好。

答案 6 :(得分:3)

如果您使用RadAjaxManager,那么这里的代码有助于:

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

答案 7 :(得分:2)

您可以通过简单地粘贴标记中按钮的OnClientClick事件中的窗口关闭代码来关闭窗口

答案 8 :(得分:0)

关闭asp.net windows应用程序,

  • 只需将按钮拖到设计页面
  • 即可
  • 然后在其点击事件

    中写下以下给定的代码
           "   this.close();  "
    

即:

 private void button2_Click(object sender, EventArgs e)  
 {
        this.Close();
 }

答案 9 :(得分:0)

  protected void Button1_Click(object sender, EventArgs e)
  {
    Button1.Attributes.Add("onclick"," CloseWindow();");
  }

    <script type="text/javascript">
        function CloseWindow() 
      {
         window.close();
      }
    </script>

答案 10 :(得分:0)

您可以简单地使用它。.简短而简单。

Response.Write("<script>window.close();</script>");

希望这会有所帮助。

答案 11 :(得分:0)

如果要在JavaScript弹出窗口上打开页面 然后

 Response.Write("<script>javascript:window.close();</script>");

会做

答案 12 :(得分:0)

对于任何想知道为什么他们无法获得所提供答案的人来说,这是因为必须使用javascript打开页面才能使用javascript关闭页面。

由于大多数找到此asp问题的人都可能使用asp:hyperlink或某种形式的asp重定向来导航到需要关闭的页面。这些重定向方法不使用javascript,因此不会被javascript关闭。

我为我的应用程序找到了一个简单的解决方案,它消除了NavigateUrl并使用asp:Hyperlink.Attributes向超链接中添加onclick的超链接,该超链接使用Java脚本打开需要由JavaScript被关闭。

aspHyperlink.NavigateUrl = "https://www.google.com";

上面的NavigateUrl已删除,而是附加了click事件。

aspHyperlink.Attributes.Add("onclick", "javascript:openInNewTab('https://www.google.com');");

在包含aspHyperlink的页面后面的代码中,我们具有用于打开Rinto

提供的url的javascript
function openInNewTab(url) {
         var win = window.open(url, '_blank');
         win.focus();
     } 

现在可以使用提供的答案关闭所有以openInNewTab打开的页面。

window.close();