Como faço para atualizar a página no ASP.NET? (Deixe-a recarregar-se por código)

StackOverflow https://stackoverflow.com/questions/1206507

  •  05-07-2019
  •  | 
  •  

Pergunta

Como faço para atualizar uma página em ASP.NET? (Deixe-a recarregar-se por código)

Eu prefiro não usar Response.Redirect (), porque eu não sei se a página que eu será, como ele está dentro de um controle de usuário dentro de um sharepoint webpart dentro.

Foi útil?

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 é:

  1. envia de volta a página com o redirecionamento de cabeçalho
  2. 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:

http://gola.vn

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top