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

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

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

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

Как правило, сделать что-то вроде:

в

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

Однако, имейте в виду, что различные вещи произойдут в различные scenerios. В Firefox выиграл'т позволю тебе закрыть окно, что это'т вы открыли (открыл окно.открыть()`).

ИЕ7 будет запрашивать у пользователя с "Эта страница пытается закрыть (Да | нет)" и диалог.

В любом случае, вы должны быть готовы иметь дело с окна не всегда закрываются!

Одним из способов исправить на 2 выше проблем является использование:

в

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

И создать close.html:



 <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>


     <h1>Please Wait...</h1>

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

Комментарии (0)
 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);
            }

        }
Комментарии (0)
Решение

ОБНОВЛЕНИЕ: Я учел все ваши пожелания и пришел к следующему решению:

В коде сзади:

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

В странице aspx:

function CloseWindow() {
    window.close();
}
Комментарии (1)

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

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

Комментарии (0)

Вы должны внедрить сценарий запуска, который закроет страницу после завершения postback.

ClientScript.RegisterStartupScript(typeof(Page), "closePage", "<script type='text/JavaScript'>window.close();</script>"); 
Комментарии (2)

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

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

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

Комментарии (0)

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

RadAjaxManager1.ResponseScripts.Add("window.opener.location.href = '../CaseManagement/LCCase.aspx?" + caseId + "'; 
window.close();");
Комментарии (0)

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

Комментарии (0)

Для тех, кто интересно, почему они не могут получить ответы на предоставленные работы это's, потому что страница должна быть открыта с помощью JavaScript для того, чтобы быть закрыт с помощью JavaScript.

Поскольку большинство людей находят этот вопрос скорее всего будет использоваться АСП АСП:гиперссылка или ASP редирект какой-то, чтобы перейти на страницу, которая должна быть закрыта. Эти методы перенаправления Дон'т использовать JavaScript и поэтому не будет закрывать на JavaScript.

Я нашел простое решение для моего приложения и что'ы исключения navigateurl свойство и через АСП:гиперссылка.Атрибуты, чтобы добавитьщелчку` в гиперссылку, которая использует 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();
Комментарии (0)
  protected void Button1_Click(object sender, EventArgs e)
  {
    Button1.Attributes.Add("onclick"," CloseWindow();");
  }

    <script type="text/javascript">
        function CloseWindow() 
      {
         window.close();
      }
    </script>
Комментарии (1)

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

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

Надеюсь, что это помогает.

Комментарии (0)

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

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

будет делать эту работу

Комментарии (0)

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

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

" эта.закрыть(); "и

т. е.:

 private void button2_Click(object sender, EventArgs e)  
 {
        this.Close();
 }
Комментарии (1)