Подтвердить что ты не робот

Программно закрыть страницу aspx из кода

Каков наилучший способ закрыть страницу ASPX из кода?

У меня есть обработчик событий кнопки, который я хочу закрыть после того, как пользователь нажал кнопку ASP.NET на странице. Я попытался программно добавить метод JavaScript, содержащий команду window.close() для события OnClientClick, чтобы закрыть страницу, но она не работает. Кнопка также является asp:AsyncPostBoskTrigger для панели обновления AJAX.

В приложении используется .NET Framework 3.5.

4b9b3361

Ответ 1

UPDATE: Я взял все ваши данные и придумал следующее решение:

В коде позади:

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

На странице aspx:

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

Ответ 2

Вы обычно делаете что-то вроде:

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>

Обратите внимание, что close.html будет перенаправляться на default.aspx, если по какой-то причине окно не закрывается через 2 секунды.

Ответ 3

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

        }

Ответ 4

Обратный вызов - это процесс повторной загрузки страницы, поэтому, если вы хотите, чтобы страница закрывалась после обратной передачи, вам необходимо установить ваш javascript window.close() для запуска с событием onload браузера во время этой обратной передачи, обычно выполняется с помощью функции ClientScript.RegisterStartupScript().

Но вы уверены, что это то, что вы хотите сделать? Закрывающие страницы имеют тенденцию мочиться от пользователей.

Ответ 5

Вам следует ввести запуск script, который закроет страницу после завершения обратной передачи.

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

Ответ 6

Вам просто нужно добавить это свойство в свой элемент asp: Button (например):

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

Он отлично работает.

Ответ 7

Вы можете закрыть окно, просто вставив код закрытия окна в кнопку OnClientClick в разметке

Ответ 8

Если вы используете RadAjaxManager, то вот код, который помогает:

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

Ответ 9

если вы открываете страницу во всплывающем окне JavaScript, тогда

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

сделает работу

Ответ 10

Для закрытия приложения windows asp.net,

  • Просто перетащите кнопку на страницу дизайна
  • Затем напишите приведенный ниже код внутри события click

           "   this.close();  "
    

т

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

Ответ 11

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

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

Ответ 12

Вы можете просто использовать это... короткое и легкое.

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

Надеюсь это поможет.

Ответ 13

Для тех, кто интересуется, почему они не могут получить предоставленные ответы для работы, потому что страница должна быть открыта 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, у нас есть JavaScript для открытия URL, предоставленного Rinto.

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

Теперь все страницы, открытые с помощью openInNewTab можно закрыть с предоставленными ответами.

window.close();