Como atualizo uma página no ASP.NET? (Deixe-se recarregar por código)
Prefiro não usar o Response.Redirect () porque não sei se a página estará, pois ela está dentro de um controle de usuário dentro de uma webpart dentro do sharepoint.
Como atualizo uma página no ASP.NET? (Deixe-se recarregar por código)
Prefiro não usar o Response.Redirect () porque não sei se a página estará, pois ela está dentro de um controle de usuário dentro de uma webpart dentro do sharepoint.
Respostas:
Depois que a página é renderizada para o cliente, você tem apenas duas maneiras de forçar uma atualização. Um é Javascript
setTimeout("location.reload(true);", timeout);
A segunda é uma meta tag:
<meta http-equiv="refresh" content="600">
Você pode definir os intervalos de atualização no lado do servidor.
Server.TransferRequest
.
Nos meus controles de usuário, depois de atualizar os dados, faço:
Response.Redirect(Request.RawUrl);
Isso garante que a página seja recarregada e funciona bem com um controle de usuário. Você usa RawURL e não Request.Url.AbsoluteUri
preserva nenhum parâmetro GET que possa ser incluído na solicitação.
Você provavelmente não deseja usar __doPostBack
:, já que muitas páginas aspx se comportam de maneira diferente ao fazer um postback.
Pode ser tarde, mas espero que ajude alguém que está procurando a resposta.
Você pode usar a 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 é:
Como você pode ver, o mesmo resultado leva 2 viagens em vez de 1 viagem.
.Text
em a TextBox
ou o .Visible
status de a Button
.
Tente o seguinte:
Response.Redirect(Request.Url.AbsoluteUri);
Use o método location.reload () do javascript .
<script type="text/javascript">
function reloadPage()
{
window.location.reload()
}
</script>
Existem vários métodos para atualizar a página no asp.net como ...
Script Java
function reloadPage()
{
window.location.reload()
}
Código por trás
Response.Redirect(Request.RawUrl)
Meta Tag
<meta http-equiv="refresh" content="600"></meta>
Redirecionamento de página
Response.Redirect("~/default.aspx"); // Or whatever your page url
Se você não deseja fazer uma atualização completa da página, que tal agrupar o que deseja atualizar dentro de um UpdatePanel e executar uma postagem assíncrona?
Pessoalmente, preciso garantir que a página mantenha o estado, para que todas as caixas de texto e outros campos de entrada mantenham seus valores. ao fazer a atualização meta, é como uma nova postagem, o IsPostBack é sempre falso, portanto todos os seus controles estão no estado inicializado novamente. Para manter o estado, coloque isso no final de seu Page_Load (). crie um botão oculto na página com um evento conectado, algo como butRefresh com o evento butRefresh_Click (...). Esse código define um cronômetro na página para disparar uma postagem, assim como um usuário clicou no botão de atualização. todo estado e sessão são mantidos. Aproveitar! (PS, pode ser necessário colocar a diretiva no cabeçalho @Page EnableEventValidation = "false" 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 de servidor), nunca enviará a página real ao navegador, apenas páginas de redirecionamento.
Você deve usar uma metatag ou JavaScript para fazer isso, para poder recarregar a página depois que ela for exibida por um tempo:
ScriptManager.RegisterStartupScript(this, GetType(), "refresh", "window.setTimeout('window.location.reload(true);',5000);", true);
Você pode usar 2 maneiras para resolver este problema: 1) Após o cabeçalho
<head>
<meta http-equiv="refresh" content="600">
</head>
2) Se sua página não tiver tag de cabeçalho, você deve usar Javascript para implementar
<script type="text/javascript">
function RefreshPage()
{
window.location.reload()
}
</script>
Meu contato:
A única maneira correta de atualizar a página foi através do JavaScript, muitas das principais respostas do .NET falharam para mim.
Response.Write("<script type='text/javascript'> setTimeout('location.reload(true); ', timeout);</script>");
Coloque o código acima no evento de clique no botão ou em qualquer lugar que você queira forçar a atualização da página.