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.
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.
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.
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:
Comme vous pouvez le constater, le même résultat prend 2 voyages plutôt qu'un voyage.
Essaye ça:
Response.Redirect(Request.Url.AbsoluteUri);
Utilisez javascript location.reload () méthode.
<script type="text/javascript">
function reloadPage()
{
window.location.reload()
}
</script>
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
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?
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>");
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);
Dans votre page_load
, ajoutez ceci:
Response.CacheControl = "no-cache";
Response.AddHeader("Pragma", "no-cache");
Response.Expires = -1;
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:
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.
Response.Write("<script>window.opener.location.href = window.opener.location.href </script>");