Redirection des utilisateurs vers une autre page
Mise à jour : novembre 2007
Vous pouvez être souvent amené à rediriger des utilisateurs vers d'autres pages dans le cadre de votre application Web. ASP.NET fournit les méthodes suivantes pour vous permettre de prendre en charge la redirection dans vos pages Web :
Utilisation de liens hypertexte sur les pages.
Configuration de la publication sur plusieurs pages, qui vous permet de spécifier une nouvelle page cible lorsque la page en cours est envoyée.
Redirection par programme en imposant au navigateur la demander d'une autre page.
Redirection par programme en transférant le contrôle à une autre page de la même application Web.
Chacun de ces points est traité en détail ci-dessous. À la fin de la rubrique, un tableau récapitule les options et fournit des indications pour vous aider à déterminer quand utiliser telle ou telle option.
Liens hypertexte
Vous pouvez utiliser une balise d'ancrage HTML (<a>) sur une page Web ASP.NET pour créer des liens statiques, ou vous pouvez contrôler par programme le texte et l'URL cible des liens hypertexte en utilisant le contrôle HyperLink. Dans ce scénario, l'utilisateur clique explicitement sur un lien et le navigateur renvoie à la page cible. La page cible est appelée à l'aide d'une commande HTTP GET. Par conséquent, aucune information sur la page source n'est transmise à la page cible à moins que vous spécifiiez une chaîne de requête sur l'URL de la page cible. Si les pages source et cible se trouvent dans la même application Web, elles peuvent partager des informations à l'aide de l'état de session ou de l'état de l'application.
Publication sur plusieurs pages
Par défaut, les boutons d'une page Web ASP.NET publient la page sur elle-même. La publication sur plusieurs pages vous permet de configurer un bouton sur une page Web ASP.NET pour publier la page en cours sur une autre page. La création d'un formulaire de plusieurs pages est un exemple classique. Vous pouvez configurer des boutons sur la page pour accéder aux pages suivantes et précédentes du formulaire.
La publication sur plusieurs pages est semblable aux liens hypertexte dans la mesure où le transfert est initialisé grâce à l'intervention de l'utilisateur. Toutefois, dans la publication sur plusieurs pages, la page cible est appelée à l'aide d'une commande HTTP POST qui envoie les valeurs des contrôles de la page source à la page cible. De plus, si les pages source et cible sont présentes dans la même application Web, la page cible peut accéder aux propriétés publiques de la page source. Comme toujours, toutes les pages de l'application peuvent partager les informations stockées dans l'état de session ou l'état de l'application.
Pour plus d'informations, consultez Publication entre pages dans des pages Web ASP.NET et Comment : publier des pages Web ASP.NET dans une autre page.
Redirection par programme à l'aide du navigateur
Vous pouvez rediriger les utilisateurs vers une autre page à l'aide des fonctions du navigateur de l'utilisateur. Dans une redirection de navigateur, celui-ci émet une nouvelle demande auprès du serveur cible dans le formulaire d'une demande HTTP GET.
Vous pouvez déclencher la redirection par programme dans le script client ou le code serveur. Dans le script client, vous pouvez appeler la méthode form.submit, à condition que la valeur de l'attribut method de l'élément <form> soit get. Dans ce cas, si la page actuelle contient des données de formulaire, elle est passée au serveur cible en l'ajoutant comme chaîne de requête à l'URL demandée.
Dans le code serveur, vous pouvez rediriger par programme en appelant la méthode Redirect. La méthode envoie une commande au navigateur de l'utilisateur, qui émet une commande HTTP GET pour la page cible. L'appel de la méthode Redirect serveur est l'équivalent programmatique du clic sur un lien hypertexte dans la mesure où il entraîne une nouvelle demande pour la page cible. Comme vous appelez les méthodes depuis votre propre code, vous pouvez définir dynamiquement l'URL cible, y compris les informations de chaîne de requête. Si les pages source et cible sont dans la même application Web, vous pouvez partager les données entre les pages source et cible en ajoutant un code serveur pour stocker les données dans l'état de session.
Remarque : |
---|
Internet Explorer jusqu'à la version 6.0 ne peut pas traiter plus de 2 048 caractères dans l'URL, y compris les données dans la chaîne de requête. Si l'URL dépasse 2 048 caractères, une erreur peut se produire, ou les données de la chaîne de requête peuvent être tronquées ou ne pas être envoyées avec la demande. Dans les pages Web ASP.NET, une demande GET qui inclut des données de publication peut aisément dépasser 2 048 caractères si les informations d'état d'affichage (qui sont stockées dans un champ masqué) font partie de la demande, ce qui provoque des erreurs. D'autres navigateurs peuvent ne pas avoir cette limitation. Pour plus d'informations, consultez l'article 208247, « La longueur maximale de l'URL est de 2 083 caractères dans Internet Explorer » (en anglais) dans la Base de connaissances Microsoft à l'adresse https://support.microsoft.com. Pour contourner cette limitation lorsque vous essayez de partager des informations entre les pages, vous pouvez rediriger les utilisateurs à l'aide de demandes HTTP POST comme décrit dans cette rubrique. Si votre application requiert une demande HTTP GET, vous pouvez stocker les informations d'une autre façon, sans utiliser de chaîne de requête, par exemple dans un état de session. |
Redirection par programme sur le serveur
Vous pouvez également effectuer une redirection par programme sur une page cible du serveur en appelant la méthode Transfer. Dans ce scénario, le serveur transfère simplement le contexte de la page source actuelle sur la page cible. La page cible est restituée à la place de la page source. Les pages source et cible doivent être présentes dans la même application Web. Comme pour la publication sur plusieurs pages, la méthode Transfer a l'avantage de permettre à la page source de lire les valeurs des contrôles et celles des propriétés publiques à partir de la page source.
Étant donné que le transfert entre les pages source et cible a lieu sur le serveur, le navigateur n'a aucune information sur la page modifiée et conserve les informations sur l'URL d'origine (source). Par exemple, la zone Adresse dans Internet Explorer ne change pas après un transfert et continue à afficher l'URL de la dernière page demandée (laquelle est généralement la page source). L'historique du navigateur n'est pas mis à jour pour refléter le transfert. Cela peut entraîner un comportement inattendu si l'utilisateur actualise la page dans le navigateur ou clique sur le bouton Précédent du navigateur. Par conséquent, l'appel de la méthode Transfer est une stratégie qui convient mieux aux applications où vous présentez des pages à l'utilisateur dont l'URL est masquée.
Sélection d'une option de redirection
Le tableau suivant récapitule les méthodes de redirection possibles entre des pages.
Stratégie |
Caractéristiques |
Usage |
---|---|---|
Liens hypertexte |
|
|
Publication sur plusieurs pages |
|
|
Redirection du navigateur |
|
|
Transfert du serveur |
|
|
Voir aussi
Tâches
Comment : passer des valeurs entre des pages Web ASP.NET
Comment : publier des pages Web ASP.NET dans une autre page
Comment : déterminer la façon dont les pages Web ASP.NET ont été appelées