FAQ ASP.NET/C#
FAQ ASP.NET/C#Consultez toutes les FAQ
Nombre d'auteurs : 39, nombre de questions : 371, dernière mise à jour : 15 juin 2021
Le deuxième paramètre signifie "faut-il interrompre le traitement en cours
avant de faire la redirection?".
Ainsi, si le paramètre est false, il attend la fin du traitement de la page. Si
un autre appel de la méthode Response.Redirect est présent c'est ce dernier qui
sera pris en compte.
Un exemple de code qui ne donnera pas le résultat souhaité:
try
{
// ...
}
catch
(
Exception)
{
Response.
Redirect
(
"error.aspx"
,
false
);
}
Response.
Redirect
(
"ok.aspx"
,
false
);
En cas d'exception, on lui signale qu'il doit faire une redirection vers la page d'erreur à la fin du traitement et puis on lui dit de faire la redirection vers ok.aspx. Ce sera donc vers cette page que la redirection sera effectuée.
Le Response.Redirect permet de rediriger un utilisateur vers une autre page. On l'utilise, par exemple, de la manière suivante:
if
(
Session[
"Username"
]
==
null
)
Response.
Redirect
(
"page.aspx"
);
Ce qui signifie que si l'utilisateur n'est pas connecté, il est redirigé vers la page spécifiée. Le résultat n'est pas toujours celui attendu car il se peut que la méthode lance une exception dont le message est "Le thread a été abandonné".
Le transfert ne peut se faire que vers des pages .aspx. Malheureusement, aucune erreur n'est signalée dans ce cas.
Response.Redirect envoie au navigateur client l'adresse de la page vers laquelle il doit être redirigé tandis que Server.Transfer permet d'exécuter le contenu d'une page sans pour autant avoir effectué un retour vers le client.
Dès lors, n'utilisez pas Server.Transfer si vous attachez de l'importance au fait que l'adresse présente dans votre navigateur soit la bonne.
A noter que si vous souhaitez utiliser Server.Transfer pour supprimer l'exception due au Response.Redirect, ce n'est à nouveau pas la bonne solution.
Préférez la méthode Execute(path, null, preserveForm) en ayant au préalable effectué un Response.Clear().
En ajoutant
protected
override
void
Render (
HtmlTextWriter writer)
{
If (!
Response.
IsBeingRedirected)
Base.
Render
(
writer) ;
}
Sur les pages que vous souhaitez. Bien entendu, si vous utilisez une master page, n'hésitez pas à placer cet élément dans la MasterPage, ce qui aura comme impact de réaliser l'opération dans chacune des pages.