Как обновить страницу в приложении ASP.NET? (пусть он перезагрузится с помощью кода)
Как обновить страницу в ASP.NET? (пусть он перезагрузится по коду)
Я бы предпочел не использовать ответ.Redirect () потому что я не знаю, будет ли страница, на которой я буду, так как она находится внутри пользовательского элемента управления внутри веб-части внутри sharepoint.
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как это увеличивает шаги в процессе. Что он на самом деле делает:
- отправляет обратно страницу с заголовком перенаправления
- браузер перенаправляет на адрес назначения URL.
Как вы можете видеть, тот же результат занимает 2 поездки, а не 1 поездка.
используйте 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;
вы можете использовать 2 способа для решения этой проблемы: 1) после первого тега
<head> <meta http-equiv="refresh" content="600"> </head>2) Если на Вашей странице нет тега head вы должны использовать JavaScript для реализации
<script type="text/javascript"> function RefreshPage() { window.location.reload() } </script>мои контакты:
единственный правильный способ, которым я мог сделать обновление страницы, был через JavaScript, многие из лучших ответов .NET не удалось для меня.
Response.Write("<script type='text/javascript'> setTimeout('location.reload(true); ', timeout);</script>");поставить выше код в событие нажатия кнопки или в любом месте вы хотите принудительно обновить страницу.
Comments