route - ¿Cómo actualizo la página en ASP.NET?(Déjalo recargarse por código)
asp route tag helper (13)
¿Cómo actualizo una página en ASP.NET? (Déjalo recargarse por código)
Prefiero no utilizar Response.Redirect () porque no sé si estaré en la página, ya que está dentro de un control de usuario dentro de un elemento web dentro de sharepoint.
En mis controles de usuario, después de actualizar los datos, hago lo siguiente:
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 preservar los parámetros GET que se pueden incluir en la solicitud.
Probablemente no desee utilizar: __doPostBack
, ya que muchas páginas aspx se comportan de manera diferente cuando se hace una devolución de datos.
En tu page_load
, agrega esto:
Response.CacheControl = "no-cache";
Response.AddHeader("Pragma", "no-cache");
Response.Expires = -1;
Esto puede ser tarde, pero espero que ayude a alguien que está buscando la respuesta.
Puede 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:
- Envía la página con encabezado de redirección
- El navegador redirige a la URL de destino.
Como puede ver, el mismo resultado requiere 2 viajes en lugar de 1 viaje.
Hay varios métodos para actualizar la página en asp.net como ...
Java Script
function reloadPage()
{
window.location.reload()
}
Código detrás
Response.Redirect(Request.RawUrl)
Meta Tag
<meta http-equiv="refresh" content="600"></meta>
Redirección de página
Response.Redirect("~/default.aspx"); // Or whatever your page url
La única forma correcta en que podía actualizar la página era a través de JavaScript, muchas de las principales respuestas de .NET fallaron.
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 que desee forzar la actualización de la página.
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.
Para ello, debe usar una metaetiqueta o JavaScript, de modo que pueda volver a cargar la página una vez que se haya mostrado durante un tiempo:
ScriptManager.RegisterStartupScript(this, GetType(), "refresh", "window.setTimeout(''window.location.reload(true);'',5000);", true);
Personalmente, necesito asegurarme de que la página mantiene el estado, de modo que todos los cuadros de texto y otros campos de entrada conservan sus valores. al hacer la actualización de meta es como una publicación nueva, IsPostBack siempre es falso, por lo que todos sus controles están en el estado inicializado de nuevo. Para conservar el estado, ponga esto al final de su Page_Load (). cree un botón oculto en la página con un evento enlazado, algo así como actualizar con el evento peroRefresh_Click (...). Este código establece un temporizador en la página para activar una devolución de datos al igual que un usuario hizo clic en el botón de actualización. todo el estado y la sesión se conservan. ¡Disfrutar! (PD: puede que necesite 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>");
Prueba esto:
Response.Redirect(Request.Url.AbsoluteUri);
Puede 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 cabecera, debe usar Javascript para implementar
<script type="text/javascript">
function RefreshPage()
{
window.location.reload()
}
</script>
Mi contacto:
Si no desea realizar una actualización de página completa, ¿qué le parece envolviendo lo que desea actualizar dentro de un UpdatePanel y luego hacer una devolución de datos asincrónica?
Una vez que la página se procesa en el cliente, solo tiene dos formas de forzar una actualización. Uno es Javascript
setTimeout("location.reload(true);", timeout);
El segundo es una Metaetiqueta:
<meta http-equiv="refresh" content="600">
Puede establecer los intervalos de actualización en el lado del servidor.
Use el método de location.reload() JavaScript.
<script type="text/javascript">
function reloadPage()
{
window.location.reload()
}
</script>
Response.Write("<script>window.opener.location.href = window.opener.location.href </script>");