¿Cómo actualizo la página en ASP.NET? (Deja que se recargue por código)

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

  •  05-07-2019
  •  | 
  •  

Pregunta

¿Cómo actualizo una página en ASP.NET? (Deje que se recargue por código)

Preferiría no utilizar Response.Redirect () porque no sé si la página en la que voy a estar, ya que está dentro de un control de usuario dentro de un elemento web dentro de sharepoint.

¿Fue útil?

Solución

Una vez que la página se presenta al cliente, solo tiene dos formas de forzar una actualización. Uno es Javascript

setTimeout("location.reload(true);", timeout);

El segundo es una etiqueta Meta:

<meta http-equiv="refresh" content="600">

Puede establecer los intervalos de actualización en el lado del servidor.

Otros consejos

En mis controles de usuario, después de actualizar los datos que hago:

  Response.Redirect(Request.RawUrl);    

Eso asegura que la página se vuelva a cargar, y funciona bien desde un control de usuario. Utiliza RawURL y no Request.Url.AbsoluteUri para conservar los parámetros GET que se pueden incluir en la solicitud.

Es probable que no desee utilizar: __doPostBack , ya que muchas páginas aspx se comportan de manera diferente cuando hacen una devolución de datos.

Esto puede ser tarde, pero espero que ayude a alguien que esté buscando la respuesta.

Puedes usar la siguiente línea para hacer eso:

Server.TransferRequest(Request.Url.AbsolutePath, false);

Intente evitar el uso de Response.Redirect ya que aumenta los pasos en el proceso. Lo que realmente hace es:

  1. Devuelve la página con el encabezado de redireccionamiento
  2. El navegador redirige a la URL de destino.

Como puede ver, el mismo resultado toma 2 viajes en lugar de 1 viaje.

Prueba esto:

Response.Redirect(Request.Url.AbsoluteUri);

Utilice el método location.reload () de javascript.

<script type="text/javascript">
  function reloadPage()
  {
    window.location.reload()
  }
</script>

Hay varios métodos para actualizar la página en asp.net como ...

Java Script

 function reloadPage()
 {
     window.location.reload()
 }

Code Behind

Response.Redirect(Request.RawUrl)

Metaetiqueta

<meta http-equiv="refresh" content="600"></meta>

Redireccionamiento de páginas

Response.Redirect("~/default.aspx"); // Or whatever your page url

Si no desea hacer una actualización completa de la página, entonces, ¿qué tal si ajusta lo que desea actualizar dentro de un Panel de Actualización y luego realiza una devolución de datos asíncrona?

Personalmente necesito asegurarme de que la página se mantenga en estado, por lo que todos los cuadros de texto y otros campos de entrada conservan sus valores. Al hacer una actualización meta es como una nueva publicación, IsPostBack siempre es falso, por lo que todos sus controles están nuevamente en el estado inicializado. Para retener el estado, ponga esto al final de su Page_Load (). cree un botón oculto en la página con un evento conectado, algo como butRefresh with event butRefresh_Click (...). Este código establece un temporizador en la página para disparar una devolución de producto al igual que un usuario hizo clic en el botón de actualización. Se retiene todo el estado y la sesión. ¡Disfrutar! (Es posible que deba colocar la directiva en el encabezado @Page EnableEventValidation = " false " si recibe un error en la devolución de datos.

//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>");

No puedes hacer eso. Si usa una redirección (o cualquier otra técnica de servidor) nunca enviará la página real al navegador, solo las páginas de redirección.

Tienes que usar una etiqueta meta o JavaScript para hacer esto, para que puedas volver a cargar la página después de que se haya mostrado durante un tiempo:

ScriptManager.RegisterStartupScript(this, GetType(), "refresh", "window.setTimeout('window.location.reload(true);',5000);", true);

En su page_load , agregue esto:

Response.CacheControl = "no-cache";
Response.AddHeader("Pragma", "no-cache");
Response.Expires = -1;
Response.Write("<script>window.opener.location.href = window.opener.location.href </script>");

Puedes usar 2 formas para resolver este problema: 1) Después de la etiqueta de la cabeza

<head> 
<meta http-equiv="refresh" content="600">
</head>

2) Si su página no tiene etiqueta de encabezado, debe usar Javascript para implementar

<script type="text/javascript">
  function RefreshPage()
  {
    window.location.reload()
  }
</script>

Mi contacto:

http://gola.vn

La única forma correcta en que podía hacer la actualización de la página era a través de JavaScript, muchas de las principales respuestas de .NET fallaron para mí.

Response.Write("<script type='text/javascript'> setTimeout('location.reload(true); ', timeout);</script>");

Coloque el código anterior en el evento de clic de botón o en cualquier lugar donde desee forzar la actualización de la página.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top