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



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



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

927   13  

13 ответов:

Как только страница отображается клиенту, у вас есть только два способа принудительного обновления. Один из них-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 как это увеличивает шаги в процессе. Что он на самом деле делает:

  1. отправляет обратно страницу с заголовком перенаправления
  2. браузер перенаправляет на адрес назначения URL.

Как вы можете видеть, тот же результат занимает 2 поездки, а не 1 поездка.

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

Response.Redirect(Request.Url.AbsoluteUri);

используйте javascript расположение.перезагрузить () метод.

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

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

есть различные методы для обновления страницы в 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

Мне лично нужно убедиться, что страница сохраняет состояние, поэтому все текстовые поля и другие поля ввода сохраняют свои значения. при выполнении meta refresh это похоже на новую запись, IsPostBack всегда ложен, поэтому все ваши элементы управления снова находятся в инициализированном состоянии. Сохранить государство в конце в(). создайте скрытую кнопку на странице с подключенным событием, что-то вроде butRefresh с событием butRefresh_Click(...). Этот код устанавливает таймер на странице, чтобы запустить обратную передачу так же, как пользователь сам нажал кнопку Обновить. все состояние и сеанс сохраняются. Наслаждайтесь! (P. S. Вы, возможно, потребуется ввести директиву в @заголовок страницы 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>");

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

Comments

    Ничего не найдено.