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

Вопрос:Как обновить страницу в ASP.NET? (Позвольте перезагрузить себя кодом) Я бы предпочел не использовать Response.Redirect(), потому что не знаю, будет ли страница, на которой я буду, как внутри пользовательского элемента управления внутри веб-части внутри sharepoint. Лучший ответ: Как только страница отображается клиенту, у вас есть только два способа принудительного обновления. Один из них - Javascript

Вопрос:

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

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

Лучший ответ:

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

setTimeout(«location.reload(true);», timeout);

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

<meta http-equiv=»refresh» content=»600″>

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

Ответ №1

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

Response.Redirect(Request.RawUrl);

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

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

Ответ №2

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

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

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

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

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

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

Ответ №3

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

Response.Redirect(Request.Url.AbsoluteUri); Ответ №4

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

<script type=»text/javascript»> function reloadPage() { window.location.reload() } </script> Ответ №5

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

Ответ №6

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

Мне лично нужно убедиться, что страница хранит состояние, поэтому все текстовые поля и другие поля ввода сохраняют свои значения. сделав 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>»); Ответ №8

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

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

ScriptManager.RegisterStartupScript(this, GetType(), «refresh», «window.setTimeout(‘window.location.reload(true);’,5000);», true); Ответ №9

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

Response.CacheControl = «no-cache»; Response.AddHeader(«Pragma», «no-cache»); Response.Expires = -1; Ответ №10Response.Write(«<script>window.opener.location.href = window.opener.location.href </script>»); Ответ №11

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

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

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

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

Мой контакт:

Ответ №12

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

Response.Write(«<script type=’text/javascript’> setTimeout(‘location.reload(true); ‘, timeout);</script>»);

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

Оцените статью
Добавить комментарий