Comment actualiser la page dans ASP.NET? (Laissez-le se recharger par code)

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

  •  05-07-2019
  •  | 
  •  

Question

Comment actualiser une page dans ASP.NET? (Laissez-le se recharger par code)

Je préférerais ne pas utiliser Response.Redirect (), car je ne sais pas si la page sera active, car elle se trouve dans un contrôle utilisateur situé dans un composant WebPart dans un point de partage.

Était-ce utile?

La solution

Une fois que la page est restituée au client, vous ne pouvez forcer l’actualisation que de deux façons. On est Javascript

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

La seconde est une balise Meta:

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

Vous pouvez définir les intervalles d'actualisation côté serveur.

Autres conseils

Dans mes contrôles utilisateur, après la mise à jour des données, je le fais:

  Response.Redirect(Request.RawUrl);    

Cela garantit que la page est rechargée et que tout fonctionne correctement à partir d'un contrôle utilisateur. Vous utilisez RawURL et non Request.Url.AbsoluteUri pour conserver les paramètres GET éventuellement inclus dans la demande.

Vous ne voulez probablement pas utiliser: __ doPostBack , car de nombreuses pages aspx se comportent différemment lors de la publication.

Cela pourrait être tard, mais j'espère que cela aidera quelqu'un qui cherche la réponse.

Vous pouvez utiliser la ligne suivante pour le faire:

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

Essayez d'éviter d'utiliser Response.Redirect car cela augmente les étapes du processus. Ce qu'il fait réellement, c'est:

  1. renvoie la page avec un en-tête de redirection
  2. Le navigateur redirige vers l'URL de destination.

Comme vous pouvez le constater, le même résultat prend 2 voyages au lieu d'un voyage.

Essayez ceci:

Response.Redirect(Request.Url.AbsoluteUri);

Utilisez la méthode location.reload () de javascript.

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

Il existe différentes méthodes pour actualiser la page dans asp.net, par exemple ...

Java Script

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

code derrière

Response.Redirect(Request.RawUrl)

Balise Méta

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

Redirection de page

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

Si vous ne souhaitez pas actualiser l'intégralité d'une page, pourquoi ne pas insérer ce que vous souhaitez actualiser dans un UpdatePanel, puis effectuer une publication asynchrone?

Je dois personnellement veiller à ce que la page conserve son état afin que toutes les zones de texte et les autres champs de saisie conservent leurs valeurs. En faisant la mise à jour méta, c'est comme un nouveau message, IsPostBack est toujours faux, ainsi tous vos contrôles sont à nouveau dans l'état initialisé. Pour conserver cet état, mettez ceci à la fin de votre Page_Load (). créer un bouton caché sur la page avec un événement lié, quelque chose comme but, maisRefresh avec événement, maisRefresh_Click (...). Ce code définit une minuterie sur la page pour déclencher une publication, tout comme un utilisateur a cliqué sur le bouton d'actualisation lui-même. tout état et session est conservé. Prendre plaisir! (Vous devrez peut-être insérer la directive dans l'en-tête @Page EnableEventValidation = "false" si vous recevez une erreur lors de la publication.

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

Vous ne pouvez pas faire ça. Si vous utilisez une redirection (ou toute autre technique de serveur), vous n'enverrez jamais la page au navigateur, mais uniquement les pages de redirection.

Pour ce faire, vous devez utiliser une balise META ou JavaScript, afin de pouvoir recharger la page après l'avoir affichée pendant un moment:

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

Dans votre chargement de page , ajoutez ceci:

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

Vous pouvez utiliser deux méthodes pour résoudre ce problème: 1) Après l’étiquette de tête

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

2) Si votre page n'a pas de balise head, vous devez utiliser Javascript pour la mettre en œuvre

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

Mon contact:

http://gola.vn

La seule manière correcte de rafraîchir la page était d'activer JavaScript. Plusieurs des principales réponses .NET ont échoué.

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

Placez le code ci-dessus dans l'événement de clic de bouton ou vers l'endroit où vous souhaitez forcer l'actualisation de la page.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top