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

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

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

Ответ 1

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

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

Второй - это метатег:

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

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

Ответ 2

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

  Response.Redirect(Request.RawUrl);    

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

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

Ответ 3

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

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

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

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

  • Отправляет страницу с заголовком перенаправления
  • Браузер перенаправляется на целевой URL.

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

Ответ 4

Попробуйте следующее:

Response.Redirect(Request.Url.AbsoluteUri);

Ответ 5

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

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

Ответ 6

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

Ответ 7

Существует несколько способов обновления страницы в 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

Ответ 8

Мне лично нужно убедиться, что страница хранит состояние, поэтому все текстовые поля и другие поля ввода сохраняют свои значения. сделав meta обновить его, как новое сообщение, IsPostBack всегда false, поэтому все ваши элементы управления снова находятся в инициализированном состоянии. Чтобы сохранить состояние, поместите это в конец страницы 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>");

Ответ 9

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

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

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

Ответ 10

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

Response.CacheControl = "no-cache";
Response.AddHeader("Pragma", "no-cache");
Response.Expires = -1;

Ответ 11

Response.Write("<script>window.opener.location.href = window.opener.location.href </script>");

Ответ 12

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

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

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

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

Мой контакт:

http://gola.vn

Ответ 13

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

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

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