Como faço para atualizar a página no ASP.NET? (Deixe-a recarregar-se por código)
https://stackoverflow.com/questions/1206507
- |
Solução
Uma vez que a página é processada para o cliente que você tem apenas duas maneiras de forçar uma atualização. Um deles é Javascript
setTimeout("location.reload(true);", timeout);
O segundo é um tag Meta:
<meta http-equiv="refresh" content="600">
Você pode definir os intervalos de atualização no lado do servidor.
Outras dicas
Nos meus controles de usuário, após a atualização de dados eu faço:
Response.Redirect(Request.RawUrl);
, que garante que a página é recarregada, e ele funciona bem a partir de um controle de usuário. Você usa RawUrl e não Request.Url.AbsoluteUri
para preservar quaisquer parâmetros GET que podem ser incluídos no pedido.
Você provavelmente não quer usar: __doPostBack
, uma vez que muitas páginas aspx se comportar de forma diferente quando se faz um postback
Esta pode ser tarde, mas espero que ajude alguém que está procurando a resposta.
Você pode usar o seguinte linha para fazer isso:
Server.TransferRequest(Request.Url.AbsolutePath, false);
Tente evitar o uso Response.Redirect
, pois aumenta as etapas do processo. O que ele realmente faz é:
- envia de volta a página com o redirecionamento de cabeçalho
- Os redireciona o navegador para o URL de destino.
Como você pode ver, o mesmo resultado leva 2 viagens em vez de 1 viagem.
Tente isto:
Response.Redirect(Request.Url.AbsoluteUri);
Usar javascript location.reload () método .
<script type="text/javascript">
function reloadPage()
{
window.location.reload()
}
</script>
Existem vários métodos para atualizar a página em asp.net como ...
Java Script
function reloadPage()
{
window.location.reload()
}
Código Atrás
Response.Redirect(Request.RawUrl)
Meta Tag
<meta http-equiv="refresh" content="600"></meta>
página de redirecionamento
Response.Redirect("~/default.aspx"); // Or whatever your page url
Se você não quer fazer uma atualização de página inteira, então como sobre a quebra que você deseja atualizar dentro de um UpdatePanel e depois fazer um postback assíncrono?
Eu, pessoalmente, precisa garantir a página mantém estado, por isso todas as caixas de texto e outros campos de entrada mantêm seus valores. fazendo meta atualizar é como um novo post, IsPostBack é sempre falsa para que todos os seus controles estão no estado inicializado novamente. Para manter estado colocar isso no final do seu Page_Load (). criar um botão escondido na página com um evento ligado, algo como butRefresh com o evento butRefresh_Click (...). Este código define um temporizador na página para disparar um postback como um usuário clicou no botão atualizar-se. todo o estado e sessão é mantida. Aproveitar! (Observação: você pode precisar colocar a directiva no "false" @Page cabeçalho EnableEventValidation = se você receber um erro na postagem.
//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>");
Você não pode fazer isso. Se você usar um redirecionamento (ou qualquer outra técnica servidor) você nunca vai enviar a página real para o navegador, somente as páginas de redirecionamento.
Você tem que usar uma meta tag ou JavaScript para fazer isso, para que você possa recarregar a página depois de ter sido exibido por um tempo:
ScriptManager.RegisterStartupScript(this, GetType(), "refresh", "window.setTimeout('window.location.reload(true);',5000);", true);
Em seu page_load
, acrescentar o seguinte:
Response.CacheControl = "no-cache";
Response.AddHeader("Pragma", "no-cache");
Response.Expires = -1;
Response.Write("<script>window.opener.location.href = window.opener.location.href </script>");
Você pode usar 2 formas para resolver este problema: 1) Após a tag cabeça
<head>
<meta http-equiv="refresh" content="600">
</head>
2) Se a sua página não tem cabeça tag você deve usar o Javascript para implementar
<script type="text/javascript">
function RefreshPage()
{
window.location.reload()
}
</script>
Meu contato:
A única maneira correta que eu poderia fazer atualização da página foi através de JavaScript, muitos dos principais .NET respostas não para mim.
Response.Write("<script type='text/javascript'> setTimeout('location.reload(true); ', timeout);</script>");
Ponha o código abaixo no evento clique de botão ou em qualquer lugar que você deseja forçar atualização da página.