web-dev-qa-db-fra.com

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

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 affichée, car elle se trouve dans un contrôle utilisateur situé dans une partie Web dans SharePoint.

153
Ahmad Farid

Une fois que la page est restituée au client, vous ne disposez que de deux manières pour forcer une actualisation. 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.

44
Ariel Popovsky

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 que cela fonctionne correctement à partir d'un contrôle utilisateur. Vous utilisez RawURL et non pas 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.

383
chris

C'est peut-ê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 augmenterait les étapes du processus. Ce qu'il fait réellement est:

  1. Renvoie la page avec 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 plutôt qu'un voyage.

40
dicemaster

Essaye ça:

Response.Redirect(Request.Url.AbsoluteUri);
37
Andrew Hare

Utilisez javascript location.reload () méthode.

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

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

Script Java

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

Code derrière

Response.Redirect(Request.RawUrl)

Meta Tag

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

Redirection de page

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

Si vous ne souhaitez pas actualiser une page entière, pourquoi ne pas insérer ce que vous souhaitez actualiser dans un UpdatePanel, puis effectuer une publication asynchrone?

6
Bryan Denny

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, donc 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! (P.S. vous devrez peut-être placer 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
JJ_Coder4Hire

Tu ne peux pas faire ça. Si vous utilisez une redirection (ou toute autre technique de serveur), vous n'enverrez jamais la page réelle 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 certain temps:

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

Dans votre page_load, ajoutez ceci:

Response.CacheControl = "no-cache";
Response.AddHeader("Pragma", "no-cache");
Response.Expires = -1;
2
sjehutch

Vous pouvez utiliser deux méthodes pour résoudre ce problème: 1) Après la balise head

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

2) Si votre page n'a pas de balise head, vous devez utiliser Javascript pour l'implémenter

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

Mon contact:

http://gola.vn

1
Tom

La seule façon correcte de procéder à l'actualisation de la page consistait à utiliser JavaScript. Plusieurs des principales réponses .NET ont échoué pour moi.

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 n'importe où vous souhaitez forcer l'actualisation de la page.

1
Hammad Khan
Response.Write("<script>window.opener.location.href = window.opener.location.href </script>");
1
farhana