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.
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.
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.
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:
- renvoie la page avec l'en-tête de redirection
- 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.
Essayez ceci:
Response.Redirect(Request.Url.AbsoluteUri);
Utilisez l'emplacement de javascript.reload() méthode.
<script type="text/javascript">
function reloadPage()
{
window.location.reload()
}
</script>
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?
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
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>");
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);
Dans votre page_load
, 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 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:
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.