Introduction A ASP Partie 1
Introduction A ASP Partie 1
Introduction A ASP Partie 1
NET
Partie 1 (concepts de base)
Auteurs : Ph. Lacomme (placomme@isima.fr) et R. Phan (phan@isima.fr)
Date : juin 2011
Avertissement : Les exemples proposés dans ce tutorial viennent en partie du livre de George
Shepherd. Nous avons refait certains exemples du livre, nous les avons complétées et nous
espérons avoir amélioré les explications (parfois très rapides) qui sont données dans le livre.
George Shepherd
Editeur : Microsoft Press, 2010 - 606 pages
ISBN : 2100547429
1
Préliminaires
Activer IIS
Aller dans le menu Demarrer et choisir Panneau de Configuration.
2
Sous Windows Vista, choisir Programme et Fonctionnalités.
3
Cela créera un répertoire c:\Inetpub\wwwroot\ dans lequel vous aller mettre vos page .asp.
Cela permet de simuler un serveur acceptant les fichier ASP.
4
<html>
<body>
<form>
</form>
</body>
</html>
5
1.2. Exemple
<select name='fonctionnalite'>
<option> Securite des types </option>
<option> Recuperation de la memoire </option>
<option> Syntaxes multiples </option>
<option> Securite des acces au code </option>
<option> Modele de thead plus simples </option>
<option> Purgatoire des versions </option>
</select>
<br>
<input type=submit name='Soumettre' value='Soumettre'> </input>
<p>
Vous avez selectionnez <%=Request("fonctionnalite") %>
</p>
</form>
</body>
</html>
6
Faites un choix dans la liste déroulante :
7
2. Ma première page ASP.NET : programme 1
Créer un répertoire c:\Inetpub\wwwroot\ASPNETStepByStep\
Démarrez Visual Studio. Créer un nouveau projet de type Application console. Mettre
comme dossier du projet celui qu’on vient de créer :
c:\Inetpub\wwwroot\ASPNETStepByStep\.
8
Créer un Nouveau Fichier.
9
Choisir ensuite Page HTML.
10
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Untitled Page</title>
</head>
<body>
<h1>Salut</h1>
</body>
</html>
Modifier le fichier :
- son nom devient : HTMLPage1.aspx
- son contenu est modifié comme suit :
11
<%@ Page Language="C#" %>
<h1>Salut</h1>
</body>
</html>
12
<%@ Page Language="C#" %>
<html>
<body>
<h1> Bonjour, ceci est une démonstration....</h1>
<%
Response.Write("Lisez l'arbre généalogique : <br> <br>");
Response.Write(this.GetType().ToString());
Response.Write(" qui dérive : <br>");
Response.Write(this.GetType().BaseType.BaseType.ToString());
Response.Write(" qui dérive : <br>");
Response.Write(this.GetType().BaseType.BaseType.BaseType.ToString());
Response.Write(" qui dérive : <br>");
Response.Write(this.GetType().BaseType.BaseType.BaseType.BaseType.ToString());
%>
</body>
</html>
Le code qui se trouve entre les deux balises <% et %> est du code exécuté du coté serveur.
Il est possible de faire la même chose en utilisant un bloc de script. Modifiez le nom du fichier
en HTMLPage3.aspx déclarez une procésure nommée ShowLineage comme indiquée ci-
dessous :
13
<%@ Page Language="C#" %>
<script runat="server">
void ShowLineage()
{
Response.Write("Lisez l'arbre généalogique : <br> <br>");
Response.Write(this.GetType().ToString());
Response.Write(" qui dérive : <br>");
Response.Write(this.GetType().BaseType.BaseType.ToString());
Response.Write(" qui dérive : <br>");
Response.Write(this.GetType().BaseType.BaseType.BaseType.ToString());
Response.Write(" qui dérive : <br>");
Response.Write(this.GetType().BaseType.BaseType.BaseType.BaseType.ToString());
}
</script>
<html>
<body>
<h1> Bonjour, ceci est une démonstration....</h1>
<%
ShowLineage();
%>
</body>
</html>
Accédédez ensuite à la page HTMLPage3.aspx :
http://localhost/ASPNETStepByStep/HTMLPage3.aspx
14
3.1. Créer une application ASP.NET.
Démarrer Visual Studio en mode administrateur. Pour cela faites un click droit sur
l’exécutable et choisir Exécuter en tant qu’administrateur.
15
La création du projet donne une configuration similaire à celle-ci :
16
Notons le port 53230 qui correspond au serveur de développement :
http://localhost:53230/exemple3/Default.aspx
<script runat="server">
void ShowLineage()
{
Response.Write("Lisez l'arbre généalogique : <br> <br>");
Response.Write(this.GetType().ToString());
Response.Write(" qui dérive : <br>");
Response.Write(this.GetType().BaseType.BaseType.ToString());
Response.Write(" qui dérive : <br>");
Response.Write(this.GetType().BaseType.BaseType.BaseType.ToString());
Response.Write(" qui dérive : <br>");
Response.Write(this.GetType().BaseType.BaseType.BaseType.BaseType.ToString());
}
</script>
<h2>
Bienvenue dans ASP.NET!
<%
17
ShowLineage();
%>
</h2>
<p>
Pour en savoir plus sur ASP.NET, consultez <a href="http://www.asp.net" title="Site
Web ASP.NET">www.asp.net</a>.
</p>
<p>
Vous pouvez également trouver de la <a
href="http://go.microsoft.com/fwlink/?LinkID=152368"
title="Documentation ASP.NET sur MSDN">documentation sur ASP.NET sur MSDN</a>.
</p>
</asp:Content>
Ce qui donne :
18
Modifiez le code en ajoutant un affichage dans la partie body comme indiqué ci-dessous :
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
Ceci est une démonstration.
</body>
</html>
19
Faire un click droit sur le projet et choisir Propriétés. (Aller dans l’affichage pour afficher
l’Explorateur de solution si besoins)
20
Si un message d’erreur suivant apparait faite la modification comme le montre l’image qui
suit (vous pouvez vous aider de la partie sur la configuration du service IIS du début du tuto) :
21
Puis passer à la partie suivante de la configuration
Notons que l’exécution se fait alors directement sur le serveur de développement IIS avec
l’adresse : http://localhost/WebApplicationDim/Default.aspx
22
Lancer IIS.
Aller dans le menu Demarrer et choisir Panneau de Configuration.
23
On retrouve alors l’application WebApplicationDim sur le Default Web Site :
Avec Visual Studio, créer une application ASP.NET nommé Mon Application ASP.
24
Modifier le fichier Default.aspx comme suit (pour configurer le « DropDownList » voir juste
après) :
25
Faire un double click sur le bouton afin d’obtenir le code C# (vous vous retrouvez alors dans
le fichier Default.aspx.cs qui contient le code source de votre programme) :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Mon_Application_ASP
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
26
4. Utilisation des contrôles personnalisés
Créer un projet de type Application Web ASP.Net Framework 3.5 et appelez-le
WebApplication4.
27
Si besoin, cliquer sur le bouton l’onglet « Design » en bas à gauche pour avoir la vue
« Design » de votre projet.
28
Faire un click sur le projet et choisir Ajouter nouvel élément.
29
Visual Studio génère alors le code suivant :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApplication4
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:WebCustomControl1 runat=server></{0}:WebCustomControl1>")]
public class WebCustomControl1 : WebControl
{
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string Text
{
get
{
String s = (String)ViewState["Text"];
return ((s == null) ? String.Empty : s);
}
set
{
ViewState["Text"] = value;
30
}
}
protected override void RenderContents(HtmlTextWriter output)
{
output.Write(Text);
}
}
}
Générer le projet.
31
Visualisez le code aspx. Le contrôle est présent à la fin du fichier.
32
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"
Inherits="WebApplication4._Default" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<br />
<br />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<br />
<asp:DropDownList ID="DropDownList1" runat="server" Height="16px"
Width="306px">
<asp:ListItem>item1</asp:ListItem>
<asp:ListItem>item2</asp:ListItem>
<asp:ListItem Value="item3">item3</asp:ListItem>
<asp:ListItem>item4</asp:ListItem>
</asp:DropDownList>
<br />
<asp:Button ID="Button1" runat="server" Height="47px" Text="Button"
Width="303px" />
<br />
<br />
<br />
<br />
<br />
</div>
<cc1:WebCustomControl1 ID="WebCustomControl11" runat="server" />
</form>
</body>
</html>
33
Modifiez le champ text et constatez ce qui se passe sur le concepteur d’interface.
34
Cela modifie le code (mode « Source ») comme suit :
Revenez en mode « Design » et faites un double Click sur le bouton. Visual Studio crée alors
automatiquement le gestionnaire d’événements lié au bouton. Ajouter alors la ligne suivante :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApplication4
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
35
Ce qui donne à l’exécution :
36
5. Utilisation d’un contrôle personnalisé : traitement des palindromes
5.1. Gestion des contrôles
Nous allons montrer comment un controleur peut faire une restitution différente en fonction
de la valeur de sa propriété text.
//-------------------------------------------------------------------------------
protected string traitement_chaine(string chaine)
{
string chaine_clone = (String) chaine.Clone();
if (chaine != null)
{
char[] rgc = chaine_clone.ToCharArray();
int i = 0;
foreach (char c in rgc)
37
{
if (char.IsLetterOrDigit(c))
i++;
else
chaine_clone = chaine_clone.Remove(i, 1);
}
}
return chaine_clone;
}
StrConrolText = this.traitement_chaine(StrMajuscule);
if (StrConrolText == Chaine_inverse_finale)
return true;
else
return false;
}
else
return false;
38
Créer une « Application Web ASP.NET » comme dans la partie 4 et nommé la
WebApplication1 :
39
Créez la page web suivante :
40
Faire un double click sur le bouton et modifier le code comme suit :
41
5.2. Gestion des contrôles
Toujours dans le projet « WebApplication1 » dans lequel nous avons ajouté le projet
« Palindrome_WebCustomControl1 », ajouter la ligne suivante dans le « public class
ServerControl1 : WebControl » du fichier « ServerControl1.cs » :
Nous allons générer un événement chaque fois que le texte est modifié. Pour cela il faut
modifier « Text » dans le fichier « ServerControl1.cs » comme suit :
42
set
{
ViewState["Text"] = value;
if (this.Tester_Palindrome() == true)
{
if (PalindromeFound != null)
PalindromeFound(this, EventArgs.Empty);
}
}
}
Sélectionnez le contrôle puis dans la partie Propriétés choisissez Evenements (bouton avec
un éclair).
43
Allez à droit de PalindromeFound et faire un double click.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
44
}
Nous allons stocker les différents palindromes. Cela se fait en ajoutant un attribut dans la
classe « ServerControl1 » du namespace « Palindrome_WebCustomControl1 » du fichier
« ServerControl1.cs ».
45
public class Palindrome_WebCustomControl1 : WebControl
{
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
using System.Collections;
set
{
ViewState["Text"] = value;
string texte = value;
if (this.SavePalindrome == null)
{
this.SavePalindrome = new ArrayList();
}
if (this.Tester_Palindrome() == true)
{
if (PalindromeFound != null)
PalindromeFound(this, EventArgs.Empty);
SavePalindrome.Add(texte);
}
ViewState.Add("palindromes", SavePalindrome);
}
}
46
output.Write(s);
}
output.RenderEndTag(); // fin </tableau
}
output.Write("<br>");
RenderPalindromInTable(output);
47
6. Les controles de validation
6.1) Créer un projet « site web » nommé ControlPotPourri
48
6.2) Ajouter un formulaire nommé ValidateMe.aspx
49
Passez en mode Design
Dans un premier temps copier le code entre les balises <body> </body> dans votre code.
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
50
</head>
<body>
<form id="form1" runat="server">
<br />
<asp:Label ID="Label1" runat="server" Text=" Prenom :"></asp:Label>
<asp:TextBox ID="TextBox1" runat="server" Width="278px"
style="margin-left: 253px"></asp:TextBox>
<br />
<asp:Label ID="Label2" runat="server" Text=" Nom :"></asp:Label>
<asp:TextBox ID="TextBox2" runat="server" style="margin-left: 267px"
Width="278px"></asp:TextBox>
<br />
<asp:Label ID="Label3" runat="server" Text=" Adresse :"></asp:Label>
<asp:TextBox ID="TextBox3" runat="server" Width="278px"
style="margin-left: 247px"></asp:TextBox>
<br />
<asp:Label ID="Label4" runat="server" Text=" code postal :"></asp:Label>
<asp:TextBox ID="TextBox4" runat="server" style="margin-left: 232px"
Width="272px"></asp:TextBox>
<br />
<asp:Label ID="Label5" runat="server" Text=" Telephone : "></asp:Label>
<asp:TextBox ID="TextBox5" runat="server" Width="278px"
style="margin-left: 237px"></asp:TextBox>
<br />
<asp:Label ID="Label6" runat="server" Text=" Mot de passe : "></asp:Label>
<asp:TextBox ID="TextBox6" runat="server" Width="269px"
style="margin-left: 222px"></asp:TextBox>
<br />
<asp:Label ID="Label7" runat="server" Text=" Conformation Mot de passe :"></asp:Label>
<asp:TextBox ID="TextBox7" runat="server" Width="278px"
style="margin-left: 135px"></asp:TextBox>
<br />
<asp:Label ID="Label8" runat="server" Text=" Age :"></asp:Label>
<asp:TextBox ID="TextBox8" runat="server" style="margin-left: 285px"
Width="278px"></asp:TextBox>
<br />
<asp:Button ID="Button1" runat="server" Height="57px"
style="margin-left: 104px" Text="Envoi des informations" Width="368px" />
</form>
</body>
</html>
51
Choisissez ensuite les ID et évitez les noms par défaut …
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<br />
<asp:Label ID="Label1" runat="server" Text=" Prenom :"></asp:Label>
<asp:TextBox ID="TextBoxFirstNBame" runat="server" Width="278px"
style="margin-left: 253px"></asp:TextBox>
<br />
<asp:Label ID="Label2" runat="server" Text=" Nom :"></asp:Label>
<asp:TextBox ID="TextBoxLastName" runat="server" style="margin-left: 267px"
Width="278px"></asp:TextBox>
<br />
<asp:Label ID="Label3" runat="server" Text=" Adresse :"></asp:Label>
<asp:TextBox ID="TextBoxAdress" runat="server" Width="278px"
style="margin-left: 247px"></asp:TextBox>
<br />
<asp:Label ID="Label4" runat="server" Text=" code postal :"></asp:Label>
52
<asp:TextBox ID="TextBoxPostalCode" runat="server" style="margin-left: 232px"
Width="272px"></asp:TextBox>
<br />
<asp:Label ID="Label5" runat="server" Text=" Telephone : "></asp:Label>
<asp:TextBox ID="TextBoxPhone" runat="server" Width="278px"
style="margin-left: 237px"></asp:TextBox>
<br />
<asp:Label ID="Label6" runat="server" Text=" Mot de passe : "></asp:Label>
<asp:TextBox ID="TextBoxPassword" runat="server" Width="269px"
style="margin-left: 222px"></asp:TextBox>
<br />
<asp:Label ID="Label7" runat="server" Text=" Conformation Mot de passe
:"></asp:Label>
<asp:TextBox ID="TextBoxPasswordAgain" runat="server" Width="278px"
style="margin-left: 135px"></asp:TextBox>
<br />
<asp:Label ID="Label8" runat="server" Text=" Age :"></asp:Label>
<asp:TextBox ID="TextBoxAge" runat="server" style="margin-left: 285px"
Width="278px"></asp:TextBox>
<br />
<asp:Button ID="Button1" runat="server" Height="57px"
style="margin-left: 104px" Text="Envoi des informations" Width="368px" />
</form>
</body>
</html>
53
Dans les propriétés, choisir
ControlToValidate.
Réitérer l'opération pour le Nom, le code postal, le téléphone, le mot de passe, le second mot
de passe, et l'age
54
Ajouter un contrôle ValidationSummary.
55
Et les erreurs sont traitées comme ceci :
56
Remarquons que la validation au niveau de la saisie se fait du coté client et donc ne
sollicite pas le réseau ni le serveur.
Nous allons revoir la validation au niveau du code postal en nous assurant que l'utilisateur à
bien saisi un chiffre.
57
Dans les propriétés, modifier le ControlToValidate pour qu'il pointe sur le code postal.
Modifier le champ ErrorMessage avec un message du type "Code postal non valide…"
58
Choisissez code postal Français.
Pour cela nous allons utiliser un contrôle RegularExpressionValidator que nous posons à
coté du champ de saisie du téléphone.
59
Nous allons ajouter un validateur d'expressions régulières sur le contrôle
TextBoxPasswordAgain.
Pour cela nous allons utiliser un contrôle CompareValidator que nous posons à coté du
champ de saisie du password.
60
Le champ ControlToCompare donne la zone avec laquelle le contenu doit être comparé.
Ceci donne :
61
7.2) Contrôles basés sur des images
62
On s'intéresse au champ ImageUrl.
63
Ceci donne à l'exécution :
64
Exécuter et examiner le code HTML.
65
Ajoutons un ImageMap à la page.
66
Cliquez sur HotSpot
67
Faire les modifications comme suite et dans « NavigateUrl » mettre :
http://www.isima.fr/~lacomme/img/BureauZoom.jpg
Tester aussi différentes paramètre de « Apparence » afin que la cadre cliquable soit sur la tête
du personnage de la photo.
68
Ceci donne à l'exécution :
NB : Penser à redémarrer le projet si les modifications ne semblent pas être prises en compte.
Et après le click :
69
7.3) Contrôles basés sur des TreeView
70
Faire un click droit et choisir Mise en forme automatique
71
En utilisant les deux icones sous le mot Nœuds, ajouter les éléments de la liste.
72
Modifiez les propriétés BorderColor et BorderStyle par exemple comme ci-dessous :
73
En éditant le code aspx vous constaterez qu'il n'y a aucune étiquette.
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
<asp:TreeView ID="TreeView1" runat="server" BorderColor="Black"
BorderStyle="Solid" Height="298px" ImageSet="XPFileExplorer" NodeIndent="15"
onselectednodechanged="TreeView1_SelectedNodeChanged" Width="205px">
<HoverNodeStyle Font-Underline="True" ForeColor="#6666AA" />
<Nodes>
<asp:TreeNode Text="Paris" Value="Paris">
<asp:TreeNode Text="Mairie" Value="Mairie"></asp:TreeNode>
<asp:TreeNode Text="Chambre de commerce" Value="Chambre de commerce">
</asp:TreeNode>
<asp:TreeNode Text="Musés" Value="Musés"></asp:TreeNode>
</asp:TreeNode>
<asp:TreeNode Text="Clermont" Value="Clermont">
<asp:TreeNode Text="Mairie" Value="Mairie"></asp:TreeNode>
<asp:TreeNode Text="Université" Value="Université"></asp:TreeNode>
<asp:TreeNode Text="Vulcania" Value="Vulcania"></asp:TreeNode>
</asp:TreeNode>
<asp:TreeNode Text="Nevers" Value="Nevers">
<asp:TreeNode Text="Cathédrale" Value="Cathédrale"></asp:TreeNode>
<asp:TreeNode Text="Mairie" Value="Mairie"></asp:TreeNode>
</asp:TreeNode>
<asp:TreeNode Text="Issoire" Value="Issoire"></asp:TreeNode>
<asp:TreeNode Text="Chamalière" Value="Chamalière"></asp:TreeNode>
<asp:TreeNode Text="Riom" Value="Riom"></asp:TreeNode>
</Nodes>
<NodeStyle Font-Names="Tahoma" Font-Size="8pt" ForeColor="Black"
HorizontalPadding="2px" NodeSpacing="0px" VerticalPadding="2px" />
<ParentNodeStyle Font-Bold="False" />
<SelectedNodeStyle BackColor="#B5B5B5" Font-Underline="False"
HorizontalPadding="0px" VerticalPadding="0px" />
</asp:TreeView>
</form>
</body>
</html>
74
Ajouter un TextBox. Et ajouter un gestionnaire sur le SelectedNodeChanged en double
cliquant juste à droite de « SelectedNodeChanged ».
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
}
protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
{
}
}
String S = this.TreeView1.SelectedNode.Text;
String chaine = "Nouveau noeud choisi = " + S + " ==> ";
if (Childnodes != null)
{
this.TextBox1.Text = String.Empty;
StringBuilder sb = new StringBuilder();
75
sb.Append(chaine);
foreach (TreeNode chilnode in Childnodes)
{
sb.AppendFormat("{0}\n", chilnode.Value);
}
this.TextBox1.Text = sb.ToString();
}
}
76
8) Cohérence de l'interface utilisateur
8.1) Utilisation d'une page Maître
77
Ajoutez un nouvel élément à la page : sélectionnez page maître.
78
Ce qui donne :
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<asp:ContentPlaceHolder id="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
</body>
</html>
79
<body style="background-color: #bbbbbb;">
<form id="form1" runat="server">
<div>
<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
</body>
Ajoutez un nouvel élément à la page de type Web Form avec page maître et l’appeler
UseMasterPage.
80
L'exécution de « UseMasterPage.aspx » donne une page grise ce qui montre que la page
utilise la page maître. Essayer de modifier la couleur dans « MasterPage.master » pour voir le
changement.
On peut manipuler cette page de la manière usuelle… par exemple en ajoutant un texte simple
comme suit :
Ce qui donnera :
81
Ajoutez un nouvel élément à la page de type Web Form avec page maître.
82
Ajouter quelques éléments dans la listbox :
Fondamentaux
Modeles avancé
Mise en cache
Diagnostic et maintenance
Données dynamique
83
Revenez au fichier maitre.
84
Insérez un tableau juste au-dessus du volet représentant le contenu de la page.
Ce qui donne :
85
NB : Remarquer bien que le tableau a été ajouté au-dessus de la zone violette. Elle représente
en fait la zone de la page « Chapitre ».
Dans la cellule de gauche on va ajouter un menu qui permettre de naviguer entre les pages du
site. Allez dans l'onglet Navigation et choisir Menu. Déplacer le menu sur la colonne de
gauche de la page web.
86
Donner un contenu à votre menu :
87
Si on exécute le fichier Chapitre.aspx on obtient :
88
Revenez à la page maître.
Revenir à la zone image et modifier le champ ImageUrl pour mettre l’image que vous avez
téléchargé. Penser à bien mettre votre image dans le bon dossier… Et redémarrer (encore) le
projet au cas où vous ne verrais pas votre image.
89
Le résultat devrait ressembler à ceci :
90
91
8.2) Utilisation d'un thème
Ajouter un formulaire nommé UseTheme.aspx au projet sans que celui-ci dépende de la page
maître.
Ajoutez un dossier de thèmes au projet : click droit sur le projet / Ajouter le dossier ASP.NET
/ Thème.
92
Renommez le dossier Thème1 en Default.
93
Ceci devrait donner un projet ressemblant à ceci :
94
Faire un clic droit sur body.
95
Et faire OK. Ceci devrait donner :
96
Cliquez sur Style pour obtenir la fenêtre suivante :
97
Modifiez l'arrière-plan.
98
Revenez à la page Usetheme.aspx.
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
99
Modifiez la section div comme suit :
<div>
</div>
On peut recommencer l'opération pour créer un thème nommé SeingRed par exemple.
100
Le projet devrait ressembler à ceci :
101
Le nouveau fichier doit ressembler à ceci (par exemple).
body {
}
h1
{
color: #FF0000;
font-family: Arial;
}
102
8.3) Utilisation d'un Skin
103
Ajoutez dans ce fichier, les contrôles pour lesquels on souhaite définir des valeurs de
propriétés par défaut.
Posez sur la page quelques éléments concernés par le skin : un bouton, un label etc…
104
9) Connexion des utilisateurs
Ouvrir le fichier web.config.
Modifiez le fichier en remplaçcant la ligne par ce qui suit. Cela permet de lancer la page
« login.aspx » (que nous allons créer juste après) afin de demander l’authentification à
l’utilisateur avant de l’autoriser à voir le contenue du site web.
<authentication mode="Forms">
<forms loginUrl="login.aspx" />
</authentication>
<authorization>
<deny users="?"/>
</authorization>
105
Créer un fichier nommé login.aspx.
106
En utilisant les attributs passer la police en taille 18 et en bold.
107
Ouvrez la page que nous avons précédemment crée nommée Chapitre.aspx
108
Editez le code source de la page login.aspx. Nous allons inclure dans cette page des scripts
qui seront exécutés coté serveur. Vérifier bien la cohérence de vos éléments graphique car
sinon, le code suivant ne marchera pas. Notamment, ajouter un appel de fonction à votre
bouton…
Avant la section head et après le tag html il faut créer deux procédures nommées :
• AuthenticateUser
• OnLogin
<html xmlns="http://www.w3.org/1999/xhtml">
if (strUsername=="toto")
{
if (StrPassword=="aaa")
return true;
}
return false;
}
// on ecrit un cookie
Response.Cookies["UserSettings"]["Font"] = "Arial";
Response.Cookies["UserSettings"]["Color"] = "Blue";
Response.Cookies["UserSettings"].Expires = DateTime.Now.AddDays(1d);
109
Response.Redirect("Chapitre.aspx");
}
else
Response.Write("connexion refusee...");
</script>
<head runat="server">
…
<asp:Button ID="Button1" runat="server" onclick="OnLogin"
Text="Connexion" Width="212px" />
…
Faites ensuite une saisie erronée : dupont avec sdfdf comme mot de passe.
La page se réaffiche avec comme message en haut : connexion refusée
110
Vous allez obtenir une redirection vers la page chapitre.aspx.
111
10) Gestion des utilisateurs
112
L’exécution doit donner :
113
Ceci donne accès aux outils d’administration du site web.
114
Faites le premier choix (fournisseur unique) ce qui vous amènera à la page suivante :
115
Choisissez le bouton OK et revenez à l’écran d’accueil. Si vous n’avez pas pu vous connecter
à la base de données cela viens du fait de votre installation de « SqlServer ». Il est possible
que ce dernier ne soit pas installé ou bien qu’il n’existe pas de base à laquelle se connecter.
116
Sur l’étape 2 choisissez Internet comme méthode d’accès.
117
A l’étape 4 activez les rôles comme indiqué ci-dessous.
118
Créez un role Admin.
119
Créez un role UtilisateurAvance.
120
Nom : utilisateur_1_avance Nom : utilisateur_2_avance
Mot de passe : aaaaaaa; Mot de passe : aaaaaaa;
Adresse : utili1@yahoo.fr Adresse : utili2@yahoo.fr
121
Recommencez l’opération pour l’utilisateur 2.
Nom : admin
Mot de passe : aaaaaaa ;
Adresse : admin@yahoo.fr
122
Passez à l’écran suivant qui va permettre de définir les rôles de chacun.
Pour le role admin, cliquer sur le lien Rechercher des utilisateurs et choisissez admin.
123
Cliquer ensuite sur « Ajouter la règle » pour créer la règle comme suit :
124
Ajouter ensuite une règle pour l’utilisateur utilisateur_1_avance
125
Refusez ensuite les utilisateurs anonymes.
126
L’outil de configuration vous donne une vue d’ensemble.
127
10.3. Utilisation de l’application
128
Remarquez le haut de la page :
La page de connexion par défaut à le mérite d’exister mais n’est pas très ergonomique. Nous
allons la modifier.
129
Faire un click droit sur Account et choisir Ajouter un nouvel élément.
130
Choisissez la page maitre :
131
Allez dans la boite à outils et chercher la section Connexion.
Sélectionner le contrôle Login.
132
Choisissez dans Mise en forme automatique la présentation qui vous convient. Pas exemple
celle-ci :
133
L’exécution donne maintenant :
134
10.5. Autorisation des utilisateurs
Maintenant que l’authentification est faite il faut définir les droits des utilisateurs connectés
sur le site.
135
Créer ensuite deux répertoires nommés :
- UtilisateursLambda
- UtilisateursAvances
136
Réitérez l’opération avec les utilisateurs lambda et les utilisateurs avancés.
137
Etape 3. Définition des règles d’accès
138
Allez dans le lien Gérer les règles d’accès.
139
Ajouter une règle interdisant à un utilisateur non administrateur d’accéder à la partie
Adminsitrateurs. Recommencez pour la partir utilisateurs avancés et utilisateurs lambda.
Utilisez un link button pour créer trois liens donnant accès aux pages aspx de chaque
catégorie.
Lancer l’application.
140
Si on cherche à accéder à la partie réservée aux administrateurs, on obtient alors un écran
nous demandant de nous identifier à nouveau comme ceci :
141
142