Programmatically close aspx page from code behind


What is the best way to close an ASPX page from the code-behind?

I have a button event handler that I want to close the page after the user has clicked an ASP.NET button on the page. I have tried to programmatically add a JavaScript method that contains a window.close() command to the OnClientClick event to close the page but it does not work. The button is also a asp:AsyncPostBoskTrigger for an AJAX Update Panel.

The application uses .NET Framework 3.5.

8/15/2013 1:44:12 PM

Accepted Answer

UPDATE: I have taken all of your input and came up with the following solution:

In code behind:

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

In aspx page:

function CloseWindow() {
12/17/2008 11:20:17 PM

You would typically do something like:

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

However, keep in mind that different things will happen in different scenerios. Firefox won't let you close a window that wasn't opened by you (opened with

IE7 will prompt the user with a "This page is trying to close (Yes | No)" dialog.

In any case, you should be prepared to deal with the window not always closing!

One fix for the 2 above issues is to use:

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

And create a close.html:

 <script language="javascript" type="text/javascript">
     var redirectTimerId = 0;
     function closeWindow()
         window.opener = top;
         redirectTimerId = window.setTimeout('redirect()', 2000);

     function stopRedirect()

     function redirect()
         window.location = 'default.aspx';
 <body onload="closeWindow()" onunload="stopRedirect()" style="">
     <center><h1>Please Wait...</h1></center>

Note that close.html will redirect to default.aspx if the window does not close after 2 sec for some reason.

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow