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