Présentation d'ASP.net

1) Création d'une application ASP.net avec Visual Studio.

Ouvrir Visual Studio et sélectionner un nouveau projet (C# et Asp.Net) ; nommez le test1 :

Un nouveau projet est créé, une page WebForm1.aspx s'affiche ; faire un click droit sur la page, renseigner le titre de la page et modifier le gestionnaire d'affichage (présentation page) :

Faire apparaître la boite à outils et installer sur la feuille un label, un textBox et un bouton, pris parmi les objets WebForm. Modifier les noms des trois objets (propriété ID) : txt1, lbl1, btnOK ; mettre à blanc la propriété Text du label et mettre "OK" dans la propriété Text du bouton.

En double-cliquant sur le bouton OK, la page de code s'affiche sur l'événement click du bouton.

Ecrire le code suivant :

Lancer l'application :

Si l'on ouvre la source on peut constater :

Si l'on remplit la zone de texte et que l'on clique sur OK la page est "publiée" (rechargée à nouveau) :

On peut constater :

2) Quelques explications.

Si l'on regarde les fichiers générés par le projet, on remarque la présence (entre autres) de deux fichiers pour la page WebForm1 :

Ce fichier, dans son en-tête fait référence au fichier WebForm1.aspx.cs

Ainsi toute page Web fait référence à un "CodeBehind" qui s'exécute sur le serveur avant de générer le code HTML qui va circuler jusqu'à l'internaute.

3) Les contrôles de validation.

Nous allons utiliser un contrôle permettant de valider les champs :

Modifier le projet précédant et ajouter les textBox :

Lancer l'application et tester :

Pour valider l'ID et le mot de passe, on peut tester leur valeur dans l'événement click du bouton :

private void btnValider_Click(object sender, System.EventArgs e)
{
            if(txtID.Text=="admin" && txtMDP.Text=="toto" )
                      Response.Write("validation ok");
}

4) Tester la publication d'une page.

Par défaut les formulaires ASP.net pointent sur le même formulaire. Ici par exemple lorsque l'on clique sur le bouton c'est le formulaire WebForm1 qui est rechargé. On appelle publication le second chargement de la page. Il est possible de tester si une page est publiée ou simplement appelée la première fois.

On pouvait donc utiliser cette facilité pour effectuer le même traitement, mais cette fois ci c'est dans l'événement Load de la page que le code doit être écrit :

private void Page_Load(object sender, System.EventArgs e)
     {
           if(this.IsPostBack)
               if(txtID.Text=="admin" && txtMDP.Text=="toto" )
                     Response.Write("validation ok");
      }

5) La redirection

Dans notre cas de validation, il est plus crédible de renvoyer sur une autre page. ceci est possible grace à nouveau à l'objet Response :

private void btnValider_Click(object sender, System.EventArgs e)
     {
             if (txtID.Text=="admin" && txtMDP.Text=="toto" )
                     Response.Redirect("WebForm2.aspx");
      }

Il serait bien sûr possible de faire comme plus haut, écrire dans l'événement Load et tester s'il s'agit d'une publication.


6) Le passage de variables.

Nous allons passer en revue les mécanismes traditionnels de passages de variables dans l'environnement Asp.Net :

La propriété Request devra être utilisée :

Les variables de tous les objets d'un formulaire F1 pointant sur un formulaire F2 peuvent être récupérés directement dans F2 :

- Si la méthode est GET :

String nom = Request.QueryString.Get("txtNom");   //si txtNom est une zone de texte

- Si la méthode est POST :

String nom = Request.Form.Get("txtNom");

- Si on ne le sait pas, et un peu paresseux...

String nom = Request.Params.Get("txtNom");

La collection Params contients les deux collections QueryString et Form ; le traitement est donc un peu plus lent.

Dans notre cas, si nous voulons récupérer des zones saisies, nous ne pouvons pas directement utiliser la méthode précédente puisque le formulaire WebForm1 ne pointe pas explicitement sur WebForm2. Il faut passer dans l'URL la variable désirée :

private void btnValider_Click(object sender, System.EventArgs e)
{
              if(txtID.Text=="admin" && txtMDP.Text=="toto" )
                  {
                       string url="WebForm2.aspx?ID="+Request.Params.Get("txtID");
                       Response.Redirect(url);
                    }
}

txtID est le nom de la zone de texte que nous voulons récupérer.

pour en savoir plus

A chaque connexion d'un client à l'application une session lui est attribuée, qu'il conserve tout au long de sa visite. Les sessions permettent ainsi de maintenir une certaine persistance de l'information. Il est possible d'ajouter à la session des variables que l'on pourra consulter à tout moment. A noter que les sessions sont conservées (par défaut) en mémoire sur le serveur.

private void btnValider_Click(object sender, System.EventArgs e)
{
              if(txtID.Text=="admin" && txtMDP.Text=="toto" )
                  {
                      Session.Add("ID",txtID.Text);
                      Response.Redirect("WebForm2.aspx");

                   }
}

Pour récupérer une variable session, il suffit d'écrire :

            lblID.Text=Session["ID"].ToString();

L'information est déposée chez le client sous la forme d'un fichier. Ceci permettra d'atteindre une information tant que le cookie sera disponible.

- Pour créer un cookie :

Il faut créer un objet HttpCookie

private void btnValider_Click(object sender, System.EventArgs e)
{
         if(txtID.Text=="admin" && txtMDP.Text=="toto" )
             {
                HttpCookie cook = new HttpCookie("ID",txtID.Text);
                cook.Expires= DateTime.Now.AddMinutes(2);
                Response.Cookies.Add(cook);
                Response.Redirect("WebForm2.aspx");
             }
}

- Pour lire le cookie dans toute autre page :

lblID.Text=Request.Cookies["ID"].Value;

L'objet Response crée le cookie, l'objet Request le récupère. .