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

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

Je préfère ne pas utiliser de réponse.Redirect() parce que je ne sais pas si la page sur laquelle je serai, car c'est à l'intérieur d'un contrôle utilisateur à l'intérieur d'un webpart à l'intérieur de sharepoint.

142
demandé sur xpda 2009-07-30 17:12:35

13 réponses

Une fois la page rendue au client, vous n'avez que deux façons de forcer une actualisation. L'un est Javascript

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

Le second est une balise Meta:

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

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

44
répondu Ariel Popovsky 2009-07-30 13:25:54

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

  Response.Redirect(Request.RawUrl);    

Cela garantit que la page est rechargée, et cela fonctionne bien à partir d'un contrôle utilisateur. Vous utilisez RawURL et non Request.Url.AbsoluteUri pour conserver les paramètres GET qui peuvent être inclus dans la requête.

Vous ne voulez probablement pas utiliser: __doPostBack, car de nombreuses pages aspx se comportent différemment lors d'une publication.

367
répondu chris 2017-07-14 00:55:31

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

Vous pouvez utiliser la ligne suivante pour cela:

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

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

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

Comme vous pouvez le voir, le même résultat prend 2 voyages plutôt que 1 voyage.

36
répondu dicemaster 2016-03-29 18:06:54

Essayez ceci:

Response.Redirect(Request.Url.AbsoluteUri);
35
répondu Andrew Hare 2009-07-30 13:16:06

Utilisez l'emplacement de javascript.reload() méthode.

<script type="text/javascript">
  function reloadPage()
  {
    window.location.reload()
  }
</script>
12
répondu jrummell 2009-07-30 13:24:13

Si vous ne voulez pas effectuer une actualisation complète de la page, que diriez-vous d'envelopper ce que vous voulez Actualiser dans un UpdatePanel, puis de faire une publication asynchrone?

6
répondu Bryan Denny 2009-07-30 13:22:16

Il existe différentes méthodes pour actualiser la page asp.net comme...

Vous Avez Besoin D'Aide?]}

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

Code Derrière

Response.Redirect(Request.RawUrl)

La Balise Meta

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

Redirection De Page

Response.Redirect("~/default.aspx"); // Or whatever your page url
6
répondu Sunil Acharya 2015-07-20 14:38:07

Personnellement, je dois m'assurer que la page conserve son état, de sorte que toutes les zones de texte et autres champs de saisie conservent leurs valeurs. en faisant meta refresh c'est comme un nouveau post, IsPostBack est toujours faux donc tous vos contrôles sont à nouveau dans l'état initialisé. Pour conserver l'état, mettez ceci à la fin de votre Page_Load (). créez un bouton caché sur la page avec un événement connecté, quelque chose comme butRefresh avec l'événement butRefresh_Click(...). Ce code définit une minuterie sur la page pour déclencher une publication comme un l'Utilisateur a cliqué sur le bouton Actualiser lui-même. tous les États et sessions sont conservés. Amusez-vous bien! (P.S. vous devrez peut-être mettre 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>");
3
répondu JJ_Coder4Hire 2014-05-14 03:30:42

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

Vous devez soit utiliser une balise meta ou JavaScript pour ce faire, de sorte que vous pouvez recharger la page après qu'elle a été affichée pendant un certain temps:

ScriptManager.RegisterStartupScript(this, GetType(), "refresh", "window.setTimeout('window.location.reload(true);',5000);", true);
2
répondu Guffa 2011-11-13 03:48:48

Dans votre page_load, ajoutez ceci:

Response.CacheControl = "no-cache";
Response.AddHeader("Pragma", "no-cache");
Response.Expires = -1;
2
répondu sjehutch 2013-03-05 22:46:30
Response.Write("<script>window.opener.location.href = window.opener.location.href </script>");
1
répondu farhana 2011-08-15 11:58:12

Vous pouvez utiliser 2 façons 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 implémenter

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

Mon contact:

Http://gola.vn

1
répondu Tom 2011-11-14 07:15:55

La seule façon correcte de faire l'actualisation de la page était via JavaScript, beaucoup des meilleures réponses. net ont échoué pour moi.

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

Mettez le code ci-dessus dans l'événement de clic de bouton ou n'importe où vous voulez forcer l'actualisation de la page.

1
répondu Hammad Khan 2016-12-12 16:47:20