Вопрос:
Как обновить страницу в 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>»);
Поместите вышеуказанный код в событие нажатия кнопки или в любом месте, где вы хотите принудительно обновить страницу.