Partager via


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

  • Exécute une nouvelle demande sur la page cible.

  • Ne passe pas les informations sur la page en cours à la page cible.

  • Requiert l'intervention de l'utilisateur.

  • Redirige vers une page, et pas seulement vers des pages de la même application Web.

  • Permet de partager des informations entre des pages en utilisant les chaînes de requête ou l'état de session. (Le contrôle HyperLink vous permet de créer par programme des URL et des chaînes de requête.)

  • Pour une navigation sans traitement supplémentaire, comme dans les menus ou les listes de liens.

  • Lorsque la navigation doit être sous le contrôle de l'utilisateur.

Publication sur plusieurs pages

  • Publie les informations de la page en cours sur la page cible.

  • Rend les informations de publication disponibles dans la page cible.

  • Requiert l'intervention de l'utilisateur.

  • Redirige vers une page, et pas seulement vers des pages de la même application Web.

  • Permet à la page cible de lire les propriétés publiques de la page source si les pages se trouvent dans la même application Web.

  • Pour transmettre les informations de la page en cours à la page cible (comme dans les formulaires à plusieurs pages)

  • Lorsque la navigation doit être sous le contrôle de l'utilisateur.

Redirection du navigateur

  • Exécute une nouvelle demande HTTP GET sur la page cible.

  • Passe la chaîne de requête (le cas échéant) à la page cible. Dans Internet Explorer, la taille de la chaîne de requête est limitée à 2 048 caractères.

  • Fournit un contrôle par programmation et dynamique sur l'URL cible et la chaîne de requête.

  • Redirige vers une page, et pas seulement vers des pages de la même application Web.

  • Vous permet de partager des informations entre les pages source et cible à l'aide de l'état de session.

  • Pour la navigation conditionnelle, lorsque vous souhaitez contrôler le contrôle et l'URL cible lors de la navigation. Par exemple, utilisez cette option si l'application doit déterminer à quelle page accéder en fonction des données fournies par l'utilisateur.

Transfert du serveur

  • Transfère le contrôle sur une nouvelle page qui est restituée à la place de la page source.

  • Redirige uniquement vers les pages cible qui se trouvent dans la même application Web que la page source.

  • Permet de lire des valeurs et des propriétés publiques à partir d'une page source.

  • Ne met pas à jour les informations du navigateur avec les informations sur la page cible. L'activation des boutons Actualiser ou Précédent du navigateur peut entraîner un comportement inattendu.

  • Pour la navigation conditionnelle, quand vous souhaitez contrôler à quel moment la navigation a lieu et que vous souhaitez accéder au contexte de la page source.

  • Convient mieux dans les cas où l'URL est masquée à l'utilisateur.

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

Concepts

Vue d'ensemble de la gestion d'état ASP.NET