Как обновить страницу в ASP.NET? (Пусть он перезагрузится сам по коду)

StackOverflow https://stackoverflow.com/questions/1206507

  •  05-07-2019
  •  | 
  •  

Вопрос

Как обновить страницу в ASP.NET? (Пусть он перезагрузится сам по коду)

Я бы предпочел не использовать Response.Redirect (), потому что я не знаю, на какой странице я буду находиться, так как она находится внутри пользовательского элемента управления внутри веб-части внутри sharepoint.

Это было полезно?

Решение

После отображения страницы клиенту у вас есть только два способа принудительного обновления. Одним из них является Javascript

setTimeout("location.reload(true);", timeout);

Вторым является метатег:

<meta http-equiv="refresh" content="600">

Вы можете установить интервалы обновления на стороне сервера.

Другие советы

В моих пользовательских элементах управления после обновления данных я делаю:

  Response.Redirect(Request.RawUrl);    

Это гарантирует, что страница будет перезагружена, и она отлично работает из пользовательского элемента управления. Вы используете RawURL, а не Request.Url.AbsoluteUri для сохранения любых параметров GET, которые могут быть включены в запрос.

Вы, вероятно, не хотите использовать: __ doPostBack , так как многие страницы aspx ведут себя по-разному при выполнении обратной передачи.

Это может быть поздно, но я надеюсь, что это поможет кому-то, кто ищет ответ.

Для этого вы можете использовать следующую строку:

Server.TransferRequest(Request.Url.AbsolutePath, false);

Старайтесь не использовать Response.Redirect , поскольку это увеличивает количество шагов в процессе. Что он на самом деле делает:

<Ол>
  • Отправляет страницу с заголовком перенаправления
  • Браузер перенаправляет на целевой URL.
  • Как видите, один и тот же результат требует 2 поездки, а не 1 поездки.

    Попробуйте это:

    Response.Redirect(Request.Url.AbsoluteUri);
    

    Используйте location.reload () метод javascript.

    <script type="text/javascript">
      function reloadPage()
      {
        window.location.reload()
      }
    </script>
    

    Существуют различные способы обновления страницы в asp.net, например ...

    Java Script

     function reloadPage()
     {
         window.location.reload()
     }
    

    Код позади

    Response.Redirect(Request.RawUrl)
    

    Метатег

    <meta http-equiv="refresh" content="600"></meta>
    

    Перенаправление страниц

    Response.Redirect("~/default.aspx"); // Or whatever your page url
    

    Если вы не хотите выполнять полное обновление страницы, то как насчет того, чтобы обернуть то, что вы хотите обновить, внутри UpdatePanel, а затем выполнить асинхронную обратную передачу?

    Мне лично нужно убедиться, что страница сохраняет состояние, чтобы все текстовые поля и другие поля ввода сохраняли свои значения. выполняя метаобновление, это похоже на новый пост, IsPostBack всегда ложен, поэтому все ваши элементы управления снова находятся в инициализированном состоянии. Чтобы сохранить состояние, поместите это в конец вашего Page_Load (). создайте скрытую кнопку на странице с подключенным событием, что-то вроде butRefresh с событием butRefresh_Click (...). Этот код устанавливает таймер на странице для запуска обратной передачи так же, как пользователь сам нажимает кнопку обновления. все состояние и сеанс сохраняются. Наслаждайтесь! (P.S. вам может понадобиться поместить директиву в заголовок @Page EnableEventValidation = " false " если вы получаете сообщение об ошибке при обратной передаче.

    //tell the browser to post back again in 5 seconds while keeping state of all controls
    ClientScript.RegisterClientScriptBlock(this.GetType(), "refresh", "<script>setTimeout(function(){ " + ClientScript.GetPostBackClientHyperlink(butRefresh, "refresh") + " },5000);</script>");
    

    Ты не можешь этого сделать. Если вы используете перенаправление (или любой другой метод сервера), вы никогда не отправите реальную страницу в браузер, только страницы перенаправления.

    Для этого вам нужно либо использовать метатег, либо JavaScript, чтобы вы могли перезагрузить страницу после того, как она некоторое время отображалась:

    ScriptManager.RegisterStartupScript(this, GetType(), "refresh", "window.setTimeout('window.location.reload(true);',5000);", true);
    

    Добавьте в page_load следующее:

    Response.CacheControl = "no-cache";
    Response.AddHeader("Pragma", "no-cache");
    Response.Expires = -1;
    
    Response.Write("<script>window.opener.location.href = window.opener.location.href </script>");
    

    Вы можете использовать 2 способа решения этой проблемы: 1) После заголовка тега

    <head> 
    <meta http-equiv="refresh" content="600">
    </head>
    

    2) Если на вашей странице нет тега head, вы должны использовать Javascript для реализации

    <script type="text/javascript">
      function RefreshPage()
      {
        window.location.reload()
      }
    </script>
    

    Мой контакт:

    http://gola.vn

    Единственный правильный способ, которым я мог обновить страницу, был через JavaScript, многие из топовых ответов .NET потерпели неудачу.

    Response.Write("<script type='text/javascript'> setTimeout('location.reload(true); ', timeout);</script>");
    

    Поместите приведенный выше код в событие нажатия кнопки или в любое место, где вы хотите принудительно обновить страницу.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top