SUPINFO International University

SUPINFO Institute of Information Technology
Laboratoire Microsoft




Tous les Articles du Laboratoire Microsoft

Tech-Ed 2004 : ASP.NET 2 Tips & Tricks
Accueil > Articles > Evènements
Auteurs 
Matthieu NICOLESCU
LABORATOIRE SUPINFO DES TECHNOLOGIES MICROSOFT.NET
Assistant Formateur


 Tous les articles de cet auteur

3,7/5

Bien


128247
425/1579

CrossPage Posting

Les développeurs PHP ou ASP notamment ont l'habitude dans leur formulaire web de définir l'attribut « action » du formulaire pour déterminer dans quelle page seront envoyées les données du formulaire. Or ce genre de manipulation n'est pas réalisable en ASP.NET 1.0 et 1.1 même en fixant manuellement l'attribut « action » (la manipulation n'est pas prise en compte par le processus ASP.NET).

En effet en ASP.NET 1, le PostBack (publication du formulaire) se fait obligatoirement sur la même page sauf si le développeur réalise une implémentation de crosspage posting (voir à la fin du chapitre). Avec ASP.NET 2.0, ce problème a été résolu car vous allez pouvoir effectuer une publication sur une autre page en définissant une simple propriété sur le contrôle provoquant la publication : c'est ce qu'on va appeler le CrossPage Posting. Pour vous expliquer au mieux cette fonctionnalité, nous allons mettre en place un petit scénario :

  • Nous avons dans une application Web deux pages « Users.aspx » affichant la liste des utilisateurs de notre site dans le but de l'éditer et une page « EditUser.aspx » pour éditer l'utilisateur sélectionné dans la WebForm  « Users.aspx ».  Nous allons donc effectuer un crosspage Posting de la page « Users.aspx » vers la page « EditUser.aspx ».

La page « Users.aspx » contient trois contrôles : « literalcontrol », « DropDownList », et notre contrôle de publication « Button » :

Et nous avons crée une propriété « SelectedUser » qui retourne l'utilisateur sélectionné dans le contrôle « DropDownList » :

public string SelectedUser    
{
        get        
                {
                        return lstUsers.SelectedItem.Value;
                }    
}

Il nous reste plus qu'à activer le CrossPage Posting à partir de notre contrôle « Button ». Pour cela nous allons utiliser la propriété « PostBackUrl » pour spécifier la page où s'effectuera la publication (ici « EditUser.aspx ») :

< asp : button
        id ="btnEditUser"
       runat ="server"
       text ="Editer Utilisateur"
       postbackurl ="~/EditUser.aspx" />

A présent la publication s'effectuera sur la page « EditUser.aspx » et non plus « Users.aspx ».  La question se pose à présent comment récupérer les informations de la page précédente « Users.aspx » une fois la publication effectuée.

Tout d'abord, vous devez ajouter sur la page « EditUser.aspx » une nouvelle directive « PreviousPageType » en lui spécifiant en attribut soit l'url de la page provoquant le PostBack ou son type :

<%@ previouspagetype virtualpath ="~/Users.aspx" %>

A partir de là, vous allez pouvoir utiliser au sein de votre page la propriété « PreviousPage » qui sera typée sur la classe de votre page « Users.aspx » et c'est donc pour cela que nous pouvons faire appel à la propriété « SelectedUser » à partir de « PreviouisPage », propriété que nous avons créée dans le codebehind de notre page « Users.aspx ».

void Page_Load( object sender, EventArgs e)
    {
        literal1.Text = PreviousPage.SelectedUser;
    }

Ou encore en passant par la méthode FindControl pour retrouver notre contrôle :

void Page_Load( object sender, EventArgs e)
    {
        literal1.Text = ((DropDownList)PreviousPage.FindControl("lstUsers")).SelectedItem.Value;
    }

Dernier point : Comment déctecter à partir de la page « EditUser.aspx » qu'il y a un CrossPage Posting à partir de la page « Users » ? Tout simplement à partir de la propriété « PreviousPage » :

if (PreviousPage.IsCrossPagePostBack)
        {
             //votre code...
        }

En ce qui concerne ASP.NET 1.x, vous avez plusieurs articles dont un publié sur CodeProject : http://www.codeproject.com/aspnet/jsnopostback.asp#xx842091xx , articles qui vont vous permettre de réaliser votre propre implémentation du CrossPage Posting en ASP.NET 1.x.


Introduction
1. CrossPage Posting
2. Site Mapping : Faciliter la navigation au sein de votre site
3. API Counters : traquez vos visiteurs
4. Changer les informations du header en ASP.NET 2
5. Url Mapping en ASP.NET 2.0 et 1.1
6. Respecter les standards avec Visual Studio et ASP.NET 2.0
7. Créer un Uploader de Fichier
8. Gérer vos chaînes de connexion
9. Pré Compilation
10. Intégration à IIS
11. Et la suite ?



En Savoir Plus 
Evaluez cet article 


Pour afficher ou poster un commentaire, cliquez sur ce lien : Forum-Microsoft



Retrouvez ci-dessous les autres sections du Laboratoire Microsoft