23417901 cours asp net complet
TRANSCRIPT
-
8/2/2019 23417901 Cours ASP Net Complet
1/105
ROYAUME DU MAROC
Office de la Formation Professionnelle et de la Promotion du Travail
DIRECTION RECHERCHEET INGENIERIEDE FORMATION
SECTEUR NTIC
Dvelopper des composants serveur
-
8/2/2019 23417901 Cours ASP Net Complet
2/105
ROYAUME DU MAROC
Office de la Formation Professionnelle et de la Promotion du Travail
DIRECTION RECHERCHEET INGENIERIEDE FORMATION
SECTEUR NTIC
-
8/2/2019 23417901 Cours ASP Net Complet
3/105
-
8/2/2019 23417901 Cours ASP Net Complet
4/105
Dvelopper des composants serveur
4.3. Les fichiers Skins ............................................................................584.4. Les fichiers CSS ..............................................................................604.5. Application d'un thme ....................................................................634.6. Appliquer un thme global................................................................ 644.7. Dsactiver un thme .......................................................................65
5. Profiles ...............................................................................................655.1. Introduction aux Profiles ..................................................................655.2. Implmentation des Profiles .............................................................665.3. Description des tables et procdures ..................................................675.4. Mise en place des Profiles .................................................................685.5. Ajouter / Modifier les proprits ........................................................705.6. Les groupes de proprits ................................................................725.7. Conclusion .....................................................................................73
6. Scurit en ASP.NET 2.0 ........................................................................736.1. Introduction ...................................................................................736.2. Le fichier de configuration: Web.config ...............................................74
6.3. Utilisation des Memberships et rles ..................................................776.3.1. Installation de la base ................................................................776.3.2. Memberships ............................................................................786.3.3. Rles .......................................................................................80
6.4. Les contrles de login ......................................................................816.4.1. Login .......................................................................................816.4.2. LoginView .................................................................................816.4.3. PasswordRecovery ....................................................................826.4.4. LoginStatus ..............................................................................826.4.5. LoginName ...............................................................................836.4.6. CreateUserWizard ......................................................................836.4.7. ChangePassword .......................................................................84
6.5. Les diffrents fournisseurs d'authentification .......................................846.5.1. Forms ......................................................................................856.5.2. Passport ...................................................................................856.5.3. Windows ..................................................................................856.5.4. None ........................................................................................85
6.6. Appliquer des autorisations ..............................................................856.6.1. Les balises ................................................................................856.6.2. Exemples d'autorisations ............................................................86
6.7. WSAT - Web Site Administration Tool................................................. 876.7.1. Security ...................................................................................876.7.2. Application ................................................................................886.7.3. Provider ...................................................................................89
7. Web Parts ............................................................................................907.1. Introduction aux WebParts ...............................................................907.2. Les diffrentes zones de WebParts .....................................................917.3. Cration des WebParts .....................................................................927.4. Formatter des WebParts ...................................................................947.5. Changement de mode ......................................................................957.6. CatalogZone ...................................................................................987.7. EditorZone ...................................................................................1007.8. Conclusion ....................................................................................102
8. Conclusion .........................................................................................103
OFPPT @Document Millsime PageC-A-001.doc mars 09 2 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
5/105
Dvelopper des composants serveur
OFPPT @Document Millsime PageC-A-001.doc mars 09 3 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
6/105
Dvelopper des composants serveur
1.Introduction ASP.NET 2.0
1.1. Principes
L'interaction Client / Serveur est la base principale des applications web.Il est donc trs important de bien comprendre le principe defonctionnement d'ASP.NET dans l'environnement DotNet avec le serveurIIS (Internet Information Services).Un petit schma trs simplifi vous aidera peut tre y voir plus clair :
Voici donc ce qui se passe lorsque vous, utilisateur dsirant naviguer surune page web, gnrez comme action si l'application que vous dsirezatteindre est dveloppe en ASP.NET 2.0 :
1 = vous tapez une url dans votre navigateur et donc, envoyez unerequte pour une page aspx d'un client web vers le serveur IIS
2 = la requte est analyse et le traitement est transfr au runtime, unprocessus est cr pour excuter l'application
--> S'il s'agit de la premire excution du code de cette page, lecompilateur JIT (Just In Time) compile le code en binaire natif et lestoque en mmoire.
--> Si ce n'est pas la premire excution, le code binaire est chargdepuis le cache.
3 = ce code binaire est excut puis renvoy vers le serveur IIS 4 = IIS renvoie la rponse sous la forme de code HTML strict vers
l'utilisateur. Ce code HTML est affich dans votre navigateur.
OFPPT @Document Millsime PageC-A-001.doc mars 09 4 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
7/105
Dvelopper des composants serveur
1.2. Environnement de dveloppement
1.2.1. Un serveur Web
Puisque nous allons crer du code utilisant une liaison Client / Serveur, ilest bien entendu ncessaire d'avoir un serveur disposition dans notrecas, Nous allons utiliser le serveur IIS.IIS est disponible avec windows XP professionnel et windows 2003serverSous XP Home, il n'est pas ais d'installer IIS, bien que cela soitpossible.
1.2.2. Framework 2.0
Si framework .NET n'a pas t install aprs le serveur IIS, vous aurez desproblmes d'excution des pages aspx.Pour remdier cet inconvnient postriori, vous pouvez excuter unecommande du type :C:\Windows\Microsoft.Net\Framework\v2.0.xx\aspnet_regiis.exe -iou xx est laversion du Framework 2.0 prsente sur votre ordinateur.
1.2.3. Un EDI, c'est ncessaire ?
Nous avons tous l'habitude de travailler dans un environnement dedveloppement intgr bien que cela ne soit pas toujours ncessaire
mais plutt bien pratique. Il en est de mme avec le dveloppementASP.NET. Vous pouvez, comme pour des applications Winforms, criredu code dans un diteur de texte. Voici, en quelques tapes, laralisation et l'excution d'une page aspx cre avec le bloc-note :
1.2.3.1. Etape 1
Crez un site virtuel sur votre IIS et nommez-le, par exemple,"PremierePage". Si vous n'avez jamais ralis cette opration, voicicomment procder :
a. Allez dans le panneau de contrle de Services Internet (IIS) :Outils d'administration dans le panneau de configuration puischoisissez Internet Informations Servicesb. Droulez les options jusqu' trouver Site Web par dfaut et faitesun clic droitc. Choisissez Nouveau -> Rpertoire virtuel ...d. Crez votre rpertoire
Voici en images et sur XP Pro en anglais les tapes dcrites ci-dessus :
OFPPT @Document Millsime PageC-A-001.doc mars 09 5 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
8/105
Dvelopper des composants serveur
OFPPT @Document Millsime PageC-A-001.doc mars 09 6 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
9/105
Dvelopper des composants serveur
Terminer votre cration en laissant les paramtres par dfaut.
1.2.3.2. Etape 2
Ouvrez le bloc-notes et crez un fichier avec ce code :
Bonjour
Nous sommes le .Sauvegardez-le la racine du site que vous avez cr en le nommantpar exemple "bonjour.aspx".
1.2.3.3. Etape 3
Excutez cette page aspx dans votre navigateur en tapant son adressedans la barre de navigation :http://localhost/PremierePage/bonjour.aspx
et vous devez avoir une page web comme suit :
OFPPT @Document Millsime PageC-A-001.doc mars 09 7 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
10/105
Dvelopper des composants serveur
Vous venez donc de crer votre premire page ASP.NET s'excutant surun serveur IIS sans avoir ouvert Visual Studio comme support deprogrammation.
1.2.4. Visual Studio ou Visual Web Developper
Il est bien vident qu'un EDI digne de ce nom vous offre une multitude
d'avantages comme la compltion du code, l'initialisation automatiquede vos pages, les contrles utilisateurs, ... malgr que, dans quelquescas, il est parfois plus avantageux de coder directement son contrledans la page HTML plutt que de passer par le Designer de l'EDI.Que vous utilisiez Visual Studio ou Visual Web Developper (EDI gratuitet tlchargeable sur le site de Microsoft France), le dmarrage de votreapplication sera presque le mme. La seule diffrence vient du fait queVisual Studio tant un EDI qui regroupe plusieurs possibilits dedveloppement, vous devrez spcifier que vous dsirez travailler avecun nouveau projet web avant d'arriver sur cette page de configuration :
OFPPT @Document Millsime PageC-A-001.doc mars 09 8 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
11/105
Dvelopper des composants serveur
Il est primordial de bien configurer les informations dans Emplacement(Location) et Langage (Language) ainsi que l'adresse du site que vousdsirez dvelopper sur votre serveur IIS local (localhost).
Visual Web Developper comporte un serveur "intgr". Si vous necomptez l'utiliser qu'en dveloppement, ce serveur Visual Studio estlargement suffisant.
1.3. La gestion dEtat
1.3.1. Premire page
Enfin ! Un petit exemple en utilisant Visual Studio ou Visual WebDvelopper pour se familiariser avec l'environnement ASP.NET. Si voustes familier avec le "designer" des applications Visual Studio ou VisualExpress Edition, ceci vous paratra trs simple mais on se permet toutde mme de dtailler un peu l'interface pour ceux qui abordent ce thmepour la premire fois.
OFPPT @Document Millsime PageC-A-001.doc mars 09 9 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
12/105
Dvelopper des composants serveur
Reprenons notre EDI et, aprs avoir bien configur les donnes auniveau du serveur et du nom de l'application, l'interface doit maintenantressembler ceci :
Vous pouvez remarquer que l'interface des applications ASP.NET diffre desapplications Winforms mais nous y retrouvons quand mme pas mal de pointscommuns, notamment :
l'explorateur de solution contenant notre projet "WebApp", salocalisation "http://localhost/WebApp" et la page par dfaut"Default.aspx", que nous pouvons bien videmment renommer.
les proprits des contrles et pages grce auxquelles nous allonspouvoir dfinir des comportements graphiques ou autres.la page de code o une partie de codage est gnreautomatiquement par l'environnement de dveloppement.deux boutons "design" et "source" nous permettant de passeraisment d'un mode l'autre dans notre page aspx. Remarquez aussique, si vous dplacez votre curseur dans la partie code, droite dubouton "source", vous apercevez l'endroit exact o se situe le curseurdans l'arborescence des balises HTML.la boite outils, ancre ou non, contenant les contrles utilisablespour votre application web :
OFPPT @Document Millsime PageC-A-001.doc mars 09 10 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
13/105
Dvelopper des composants serveur
Passons maintenant en mode "design". Faites glisser sur la page lescontrles suivant et changez leurs proprits en suivant le tableau ci-aprs :
Contrle Proprit Contenu
Un "label" : Label1 Text "Nom :"
Un "textbox" droite de Label1 : TextBox1 BorderWidth 2
Un "button" sous Label1 : Button1 Text "Cliquez"
Un "label" sous le bouton : Label2 Text "Bonjour"
Remarque : dans la proprit BorderWidth, par dfaut, l'unit de mesureest en "px" (pixel). Cela correspond bien aux normes HTML.
Votre page doit ressembler ceci :
OFPPT @Document Millsime PageC-A-001.doc mars 09 11 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
14/105
Dvelopper des composants serveur
Si vous retournez en mode "source", vous constatez que le code HTMLs'est enrichi automatiquement des contrles que vous avez intgrs votre page ainsi que des proprits modifies via la page de proprits.Rien ne vous empche, au fil de l'exprience acquise dans ledveloppement ASP.NET, de taper immdiatement le code de vos
contrles dans la page HTML, vous verrez que le "design" se met aussi jour de la mme manire. L'avantage de coder directement dans l'HTMLse trouve dans le libre choix que vous avez du type de contrle plac.Par exemple, vous voyez dans notre application que le TextBox1 estconsidr comme un "asp:textbox" ce qui, niveau excution du codeprend plus de place et de temps qu'un simple "asp:inputbox" alors quele rsultat, ici, est exactement le mme. Pour les utilisateurs avertisayant dj ralis des sites web en HTML, il peut aussi tre plus ais decoder directement dans la page source.
A ce point, nous avons des contrles placs sur une page aspx, mais
encore aucune action n'est dfinie. Vous avez beau taper un nom dans"TextBox1" et cliquer sur le "Button1", rien ne se passe. En effet, il fautassocier un vnement au bouton "Cliquez". Pour ce faire, double-cliquez sur le bouton en mode design et l'environnement dedveloppement va crer une mthode associe l'vnement "Click" dubouton :
Remarquez qu'une nouvelle page est apparue "Default.aspx.vb" quicontient le code associ aux mthodes et vnements. Dans votrevnement "Button1_Click", tapez cette ligne :
label2.text=label2.text & " " & textbox1.text
Vous verrez en cours de frappe que l'aide la compltion existe aussi,exactement comme dans les applications winforms. Maintenant, vouspouvez excuter votre page aspx (F5). Lors d'une premire excutionvous allez certainement obtenir ce message :
OFPPT @Document Millsime PageC-A-001.doc mars 09 12 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
15/105
Dvelopper des composants serveur
Par dfaut, le dbogage n'est pas activ au niveau des applications web.On vous conseille fortement de l'activer en rpondant OK avec lapremire option coche.
Ensuite, testez en tapant un nom et en cliquant sur votre bouton.
1.3.2. Des vnements particuliers
ASP.NET possde des vnements mais, certains sont assez particulierset trs importants pour le droulement et le contrle de ce genred'application.
1.3.2.1. Application
Evnement Description
Application_StartExcut lors du premier appel une page du sitedepuis le dmarrage de IIS
Application_EndAppel lorsque l'application se termine, cela nesignifie pas que IIS s'arrte mais est d'office appelsi, pour une raison quelconque IIS est arrt
1.3.2.2. Session
Evnement Description
Session_Startappel lors de chaque nouvelle sessiond'un navigateur client
Session_End
fin de session : lors d'un timeout ou lorsd'une destruction explicite(Session.Abandon()) via un lien "LogOut" par exemple
Il faut aussi savoir qu'une session peut stocker ses donnes en mode"InProc" (dans le process en mmoire) ou en mode "Sql..." (dans uneBD SqlServer) via la base de donnes "AspNetState".
OFPPT @Document Millsime PageC-A-001.doc mars 09 13 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
16/105
Dvelopper des composants serveur
Application et Session sont des notions trs importantes en ASP.NET.Elles jouent en effet un rle trs actif au niveau de la vie d'un site et,notamment, au niveau de la prennit des donnes vhicules dans lesite lui-mme.
Un petit schma pour mieux visualiser la diffrence entre "Application"et "Session" :
Soit trois utilisateurs U1, U2 et U3 qui envoient une requte vers leserveur IIS. Il y aura un seul objet "Application" commun tous lesutilisateurs du site mais trois objets "Session" correspondant chacun un utilisateur prcis.
Si U2 quitte son poste de travail sans couper son navigateur :
s'il n'y a pas de timeout, les autres utilisateurs peuvent accder S2 S'il y a timeout et que U2 revient visiter le site, une nouvelle session
S4 sera cre
Par contre, si U2 coupe son navigateur, S2, persiste jusqu' un ventueltimeout ou jusqu' la fin de l'application
1.3.2.3. PostBack
IsPostBack
Une p age ASP .NET est gnralement u tilise plusieurs fois la suite, dans une sried'changesavec l'utilisateur.
Supposons qu'une page d'accueil (accuei 1. htm) soit affiche. L'utilisateur cliquesur un lien qui conduit la page saisie.aspx. Comme l'extension de la page est
OFPPT @Document Millsime PageC-A-001.doc mars 09 14 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
17/105
Dvelopper des composants serveur
aspx, celle-ci est traite parASP.NET.Il s'agit alors de la premire fois que la pageest appele.
Cette page de saisie peut comprendre des contrles qui provoquent un appel auserveur, parexemple des boutons de type asp:Button.
Quand l'utilisateur clique sur un bouton, la mmepage est appele mais l ce n'est
pas la premire fois : la page prcdente tait la mme.
Une proprit de la classe Page indique si la page est appele la premire fois ounon : IsPostBack.
Si la valeur de cette propritest False. il s'agit du premier appel de la page.
Si la valeur de IsPostBack est True, la page est appele par elle-mme.
OFPPT @Document Millsime PageC-A-001.doc mars 09 15 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
18/105
Dvelopper des composants serveur
Pour crer une application qui met en vidence la proprit IsPostBack, vouspouvez effectuerles manipulations suivantes :
o Crez un nouveau projet Application Web ASP.NET.
o Supprimez la page initiale Default.aspx et ajoutez un nouveau formulaire WebappelSaisie.
o Ajoutez au projet une page HTML appele accueil.htm.
o Cliquez droite sur Accuei 1 dans l'explorateur de solutions et slectionnezDfinir commepage de dmarrage dans le menu contextuel.
o Placez un lien sur la page Accueil dont l'URL de destination est Saisie.aspx
Dans la page Saisie, placez un contrle Web Form Label appelIblIsPostBack et un contrle Button
Vous pouvez maintenant ajouter le code suivant dans l'vnementPage_Load de la pageSaisie:
Private Sub Page_Load(...) Handles MyBase.Load
If IsPostBack Then
IblIsPostBack.Text = "IsPostBack est vrai"
IblIsPostBack.ForeColor = Col or.RedEl se
IblIsPostBack.Text = "IsPostBack est faux"
IblIsPostBack.ForeColor = Color.Green
E n d I f
E n d S u b
OFPPT @Document Millsime PageC-A-001.doc mars 09 16 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
19/105
Dvelopper des composants serveur
OFPPT @Document Millsime PageC-A-001.doc mars 09 17 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
20/105
Dvelopper des composants serveur
1.3.3. Les Server Controls
Un petit mot sur les types de contrles prsents dans ASP.NET. Il existedeux jeux de contrles s'excutant ct serveur :
Les Web Controls, grs par des vnements, ils ressemblent plus auxobjets utiliss dans du dveloppement winforms c'est--dire qu'ilspossdent des proprits ("font", "backcolor", ...) facilitant la mise enforme. Ils dpendent de "System.Web.UI.WebControls".Les HTML Controls qui correspondent directement aux balises HTML.Les attributs des balises correspondantes sont accessibles via lesproprits de ces contrles. Pour faire une analogie avec les"WebControls", ceux-ci ne possdent qu'une balise "Style" pour la miseen forme, cela est plutt limitatif.Ces derniers dpendent eux de "System.Web.UI.HtmlControls".
Gestion de l'tat, lasession, les cookies
M ise env idence du prob lm e
S toc ka ge d es do nnes sur le c l ient
S toc ka ge d es do nnes sur le serveur
On a vu que chacune des pages effectuait un travail spcifique, les
seules relations entre une page et une autretant un appel avec unhyperlien.
La question qui se pose est comment effectuer un traitement surplusieurs pages et particulirement comment retrouver dans le codeassoci une page les donnes d'une autre page.
le Web est par essence un systmesans tat: l'utilisateur demandeune page, celle-ci est renvoye par le serveur, puis tout est oubli !Lors de la prochaine demande de l'utilisateur, le serveur ne se rappellera de rien. En d'autres termes, le serveur ne fait querpondre des demandes ponctuelles de l'utilisateur,une par une,sans aucune connexion entre elles.
Pour resoudre de probleme on peut distinguer plusieurs situationset systmes pour grer l'tat, c'est--dire faire passer lavaleur dedonnes d'une page une autre.
Les quatre premires techniques se servent duclientpour stocker lesdonnes :
Utiliser le ViewState, l'tat d'affichage des pages Web mis enuvre dans des sacs d'tat(state bags).
Utiliser des champscachs.
OFPPT @Document Millsime PageC-A-001.doc mars 09 18 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
21/105
Dvelopper des composants serveur
Passer les donnes par
l'URL.
Placer les donnes dans des cookies sur le poste de
l'utilisateur.Les techniques suivantes stockent les donnes sur leserveur:
Stocker les donnes dans des variables de session.
Faire de mme avec des variables d'application.
Utiliser le contexte.
Placer les donnes dans le cache.
La gestion de l'tat concerne deux catgories de donnes :
Les valeurs des variables de l'application, principalement les
variables de la classe associe la page. Les valeurs des proprits des contrles de la page.
TRAVEAUX PRATIQUES :
Mise en vidence du problmePrenons un exemple simple pour montrer comment la gestion
de l'tat diffre dans les applications Web de ce qu'elle est
dans les applications classiques.
La page PageEtat1 prsente un contrle TextBox (txtNom) et
un bouton OK (btnOK). Quand l'utilisateur clique sur le
bouton, le contenu de la zone de saisie est recopi dans une
variable declasse appele Nom (il s 'agit d'un membre de la
classe associe la page) :
' Variable contenant
le nom Private Nom
As Stn'ng
Private Sub btnOK_Click(...)
Handles btnOK.Click
Stocke le nom dans un e variableNom = txtNom. Text
E n d S u b
OFPPT @Document Millsime PageC-A-001.doc mars 09 19 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
22/105
Dvelopper des composants serveur
Un second bouton sur la page (btnAfficheNom) permet d'afficher
dans un contrle Label(IblNom ) le contenu de la variable Nom
Private Sub
btnAfficheNom_Click(...)
Handles btnAfficheNom .Click
' Affiche le contenu de la variable
IblNom.Text = Nom End Sub
1.3.4. ViewState
Prenons un peu le temps de voir le code HTML de la page excute :
OFPPT @Document Millsime PageC-A-001.doc mars 09 20 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
23/105
Dvelopper des composants serveur
Vous constatez que des champs cachs ont t gnrs. Le champnomm_VIEWSTATE .
Les donnes d'tat de la page
chaque page est associ un tat d 'affichage (View State), qui stockel'ensemble des donnes de la page et de ses contr les. Cet tatd'aff ichage est implment dans un objet de classe StateBag(littralement, sac d'tat), qui enregistre les donnes sous la forme depaires de cls et de valeurs, dans un dictionnaire.
NOTE :Pour que l tat d aff ichage soit opra tionnel, i l faut qu e la propri t Enab leview State de lapage soit True.
Ces donnes sont transportes du serveur une page sur le poste del'utilisateur, puis de celle-|ci au serveur nouveau, dans un cham p cachdu formulaire (un champ de type ). Le contenu de cechamp correspond l'ensemble des valeurs qui se trouventdans l'objetStateBag, codes de tette faon qu'elles soient transportables sur leprotocole HTTPet qu'il ne soit pas facile de les dcoder ou de lesmodifier.
L'tat d'affichage n'est utilisable que sur la mme page appeleplusieurs fois, pas entre plusieurs pages diffrentes.
ViewState("Nom") = Value
pour stocker le contenu de Value sous le nom Nom. On pourra ensuite relire cettedo nne
On peut accder l'objet StateBag associ une page grce la propritV iewState de l'obje t Page. La c l associe une donne esautomatiquement cre si celle-ci n'existe pas, ou elle est remplace dans l
OFPPT @Document Millsime PageC-A-001.doc mars 09 21 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
24/105
Dvelopper des composants serveur
Nom = ViewState("Nom")
On peut ainsi transformer la page de l'exemple prcdent afin de stocker le nom,non plus dans un e variable de la classe, mais dans l'objet StateBag de la page.
on peut rem placer la dclaration de la variable Nom par une proprit de mme nom etqui utilise l'objet StateBag :
Private Property Nom () As String GetNom = ViewState("Nom")
E n d G e tSet(ByVal Value As String) ViewState("Nom") = Value
E n d S e tEnd Property
Ainsi, le code qui utilise la donne Nom reste le mme :
Private Sub btnOK_Click(...) Handles btnOK.Click' Stocke le nom dans une variable
Nom = txtNom.Text
E n d S u b
Private Sub btnAfficheNom_C lick(...)Handles btnAfficheNom.Click' Affiche le contenu de la variable
IblNom.Text = Nom
E n d S u b
Avec cette nouvelle version, le nom s'affiche bien quand on clique sur lebouton.
1.3.5. Cookies
Stockage des donnes dans des cookiesUn cookie est du texte stock sur le poste du client. Il est gnralement enregistr lademande du serveur, par l'intermdiaire de la proprit Cookies de l'objet HttpResponse
OFPPT @Document Millsime PageC-A-001.doc mars 09 22 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
25/105
Dvelopper des composants serveur
retourn par laproprit Response de la page. Il peut tre lu travers la proprit Cookies del'objet HttpRequest retourn par la proprit Request de la page.
Pour crire un cookie, qu i est un couple nom-valeur, il suffit de lui donner une valeur, en indiquantson nom comme paramtre de la collection Cookies. Si le cookie existait dj, il est remplac,dans le cas contraire, il est cr :
I Response.Cookies(''MonCookie").Value = "La valeur"
Un cookiecrit de cette faon n'est pas permanent : il n'existe qu'en mmoire, donc pendant ladure de l'application. Il disparatra quand celle-ci s'arrtera.
Pour rendre un cookie permanent, il faut indiquer une date d'expiration. Par exemple :
Response.Cookies("MonCookie").Value = "La valeur"Respo nse.Coo kies(" Mo nCoo kie").Exp ires =#1/1/2030#
Le cookie sera alorscrit sur le disque de l'utilisateur et y restera jusqu' la date d'expirationou jusqu' ce qu'il soit effac.
On peut lire un cookie en utilisant la mme collection Cookies, maie applique l'objetHttpRequest. Voici le code qui relit le cookiecrit prcdemment :
| MonC ookie = Request.Cookies("MonC ookie"). Value
Si le cookie existait dans cette application, sa valeur est retourne. Dans le cas con traire, la valeurde retour est une chane de caractres vide.
L'ensemble des cookies d'une application est transmis avec chaque demande de l'utilisateur. Ilest donc prfrable de ne placer que de petites quantits de donnes dans les cookies, afin de nepas grossir la trame HTTP circulant sur le rseau, d'autant plus que la taille d'un cookie estelle-mme limite.
La page exemple SaisieNom dispose d'un bouton Affiche avec cookie. Quand l'utilisateurclique dessus, le contenu du champ de saisie est plac dans un cookie temporaireappel
Nom . L'application est e nsuite redirige vers une autre page, l'aid e d e la mthode Redi -rect del'objet HttpResponse :
Private Sub btnOKCookie_Click(...) Handles btnOKCookie.ClickResponse.Cookies("Nom").Value = txtNom.Text' Supprimez le commentaire de la ligne suivante pour rendre le cookie permanent'Response.Cookies("Nom").Expires = #1/1/2030*
Response.Redirect("AfficheNomCookie.aspx")
E n d S u b
La page Af fiacheNomCookie affiche le texte lu dans le cookie.
OFPPT @Document Millsime PageC-A-001.doc mars 09 23 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
26/105
Dvelopper des composants serveur
Private Sub Page_L oad(...) Handles MyBase.Load
IblNom.Text = Request.Cookies("Nom").ValueE n d S u b
OFPPT @Document Millsime PageC-A-001.doc mars 09 24 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
27/105
Dvelopper des composants serveur
Stockage des donn es sur le serveur
Toutes les techniques prsentes prcdemment stockent les donnes sur le poste du client.Celles de c ette section les placent su r le serveur.
Cela prsente quelques avantages :
Les donnes ne sont jamais visibles par le client.
Elles ne circulent pas sur le rseau et ne l'encombrent donc pas.
Elles ne sont pas lies au poste utilis par le client, comme c'est le cas pour lescookies(si l'utilisateur utilise un autre poste, il ne dispose pas de ses cookies).
Leur accs est plus rapide, puisqu'elles se trouvent dj sur le serveur.
Le stockage des donnes sur le serveur prsentegalement quelques inconvnients :
Les donnes occupent de la place sur le serveur, ce qui peut deven ir ennuyeux sibeaucoupd'utilisateurs accdent l'application.
L'utilisateur peuttre li au serveur sur lequel se trouvent les donnes, bienqu'ASP.NET propose des solutions pour cela.
Les variables d'application
Une variable d'application est conserve dans un objet particulier, de classeHttpApplication, retourn par la propr it Application de la page.
Cet objet comprend des donnes lies une application.
Au fait, qu'est-ce qu'une application Web?
Il s'agit de l'ensemble des fichiers,pages, gestionnaires, modules et code situs dans unrpertoire virtuel et ses sous-rpertoiressur un serveur Web donn.
Pour c rer une variable d 'application, il suffit de la nommer et de lui donner une valeur, unpeu comme pour les cookies prsents plus haut :
| Application("NomVariable") = "Valeur variable"
Si la variable du nom indiqu existait dj, sa valeur est remplace, sinon elle est cre.
L'utilisation de variables d'application est donc extrmement simple.
Il faut cependant fairequelques remarques :
Une variable d'application est vue par tous les utilisateurs de l'application. Il nefaut doncpas y stocker des donnes spcifiques un utilisateur, mais plutt desdonnes communes toute l'application, par exemple le nom de la soc it ou unetable de taux de TVA ou compter le nombre des utilisateurs connectes.
Les variables d'application sont stockes dans le serveur Web qu i les cre. Dans le casd'une ferme de serveurs (plusieurs serveurs qui jouent des rles semblables), lademande d'un utilisateur peuttre dirige vers un serveur ou un autre selon leur
OFPPT @Document Millsime PageC-A-001.doc mars 09 25 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
28/105
Dvelopper des composants serveur
charge. Une applica tion peu t donc ne pas d isposer des donnes cres pa r la mmeapplication sur un autreserveur.
Lors de la modification de la valeur d'une variable d'application, il existe un risque qued'autres utilisateurs effectuent un changement de la mme variable au mme moment.Il convient donc de synchroniser l'accs ces variables, comm e cela est montr dans
l'exemple suivant.
On place donc gnralement d ans les variables d'application des donnes en lectureseule. Ces variables sont alors uti lises comme une sorte de cache pour desdonnes qui ne varient pasou peu pendant la dure de vie de l'application.
Il faut cependant bien initialiser les variables d'application quelque part. Cela peuttre faitquand l'application dmarre, en plaant du code spcifique dans le fichier global.asax del'application qui est ajout un projet Web par Visual Studio .NET lors de sa cration. Cefichier comprend des donnes et du code globaux l'application. On peut notamment yajouter des procdures qui seront appeles par le serveur Internet quand certainsvnements se produiront. Il suff it , pour cela, de driver une classe de la c lasse
HttpApplication et d'ycrire lesprogrammes ncessaires.Pour grer les variables application, on peutcrire du code dans les procdures suivantes :
Init et Application_OnStart sont appeles au dmarrage de l'application. On y insredonc gnralement le code d 'initialisation des variables.
Dispose et Application_OnEnd sont appeles quand l'application se termine.
Une application dmarre la premire fois qu'un utilisateur appelle une page qui enfait partie. Si le serveurWeb est arrt, elle l'est aussi.D'autre part, si le fichierglobal .asax est modifi, l'application est arr t e puisredmarre.
On peutremarquer qu'il existedeux proc dures pour le dmarrage et l'arrt del'application.Les constructeurs et destructeurs Init et Dispose sont appels pour chaque objetHttpApplication cr, tandis que les procdures Application_OnStart etApplication_OnEnd sontappeles la premire cration. Il est donc gnralementprfrable d'initialiser les donnes dans le constructeur Init.
La page AfficheNomApplication affiche une donne place dans une variableApplicationappele Nom par la page appelante, SaisieNom. Celle-ci excute le code suivantlors du clic sur le bouton A ffiche avec application:Private Sub btnOKApplication_Click(...) Handles btnOKApplication.Click
Application.Lock()
Application("Nom") = txtNom.Text -
Application.Unlock()
Response.Redirect("AfficheNomApplication.aspx")
E n d S u b
OFPPT @Document Millsime PageC-A-001.doc mars 09 26 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
29/105
Dvelopper des composants serveur
On peut remarquer dans ce code que l'affectation de la valeur la variable Applicationest accompagne d'un appel aux mthodes Lock puis UnLock. Lock verrouille l'objetApplication afin d'viter qu'une modification y soit effectue en mme temps par unautre thread.
La page AfficheNomAppl i cati on affiche la valeur stocke dans la variableApplication lors de son chargement :
Private Sub Pag e_Load (...) Hand les MyBase.Load
' Do nne initia l ne par la page appelante
IblNom.Text = Application("Nom")
' Donnes initialises dans Global.asax
IblInit.Text = Application("Init")
IblOnStart.Text = Application("OnStart")
E n d S u b
Vous pouvez remarquer que le code de traitement de l 'vnement Load affichegalement les valeurs de deux autres variables (figure 7-10). Celles-ci ontt initialisesdans des procduresvnement de Global .asax :
Public Class Global
Inheri ts System.Web.HttpApplication
Public Overrides Sub Init()
Application("Init") = "Donne initialise dans Init"
End Sub
Sub Application_OnStart(ByVal sendr As Object, ByVal e As EventArgs)
Application(OnStart") = "Donne initialise dans A pplication_On Start"
End Sub
End Class
OFPPT @Document Millsime PageC-A-001.doc mars 09 27 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
30/105
Dvelopper des composants serveur
Les variables partag es
L'utilisation de l'objet Application pour conserver des donnes tait courante dansles versionsprcdentes d'ASP. Elle prsente cependant quelques inconvnients,particulirement le fait que les donnes n'y sont pas types, ce qui allonge lestemps de traitement lorsqu'on y accde.
On pourrait tre tent d'utiliser des variables d'instance de l'objet Application
(appel Global par dfaut) dclar dansGlobal .asax. Cela n'est cependantpas possible, car il peut exister plusieurs objets Application crs partir de la
classe Global. Quand une page est appele sur leserveur, ASP.NET peut, soit
fabriquer un nouvel objet Global, soit utiliser un objet existant. Onne peut donc
pas avoir de certitude sur l'objet Global employ par une page, et ses variables
d'instance ne peuvent donc pastre mmorises d 'un appe l l'autre.
Il est cependant possible de dclarer des variables partages dans la classe Globalavec le m ot-cl Shared. Une telle variable s'utilise indpendamment de la crationd'un objet, elle est doncglobale l'application.
Voici, par exemple, une variable dclare dan s Glo bal .asax, d ans la classe G lobal
Public Class GlobalInherits System.W eb.HttpApplication
Public Shared No m As S tring
La variable Nom peut alorstre valorise dans une p age, comme dans la page SaisieNom la suite d'un clic sur le bouton Affiche avec variable Shared:
Private Sub btnOKS hared__C lick(...) Handles btnOK Shared.Click
SyncLock Me
Global.Nom = txtNom.Text
E n d S y n c L o c k
Response.Redirect("AfficheNomShare.aspx")
E n d S u b
Le problme de l 'accs simultan la donne par p lusieurs threads se posenouveau. Il est rgl ici en plaant le code qui accde la d onne da ns une sec tion desynchronisation, ce quigarantit qu'un seul thread peut excuter la section la fois.
L'utilisation de la donne se fait dans u ne autre page, Af fi cheNom Shared (i l n'est pasncessairede syn chroniser l'accs la d onne en lecture seule:
Affichage du nom aprs passage par une variable partage
OFPPT @Document Millsime PageC-A-001.doc mars 09 28 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
31/105
Dvelopper des composants serveur
Private Sub Page_Load(...) Handles MyBase.Load
IblNom.Text = Global.Nom
E n d S u b
Les variables de session
Si les variables d'application sont intressantes pour stocker les
donnes d'une application, elles ne permettent pas de distinguer unutilisateur d'un autre. Les variables de session rpondent cetteinsuffisance, car elles sont associes l'utilisateur courant.
La notion de session
Pour mettre enuvre les variables de session, ASP.NET dfinit unenotion de session qui comprend l'ensemble des actions d'un utilisateurdans une application. Une session est reconnuepar un identificateurde session cr par ASP.NET. Il s'agit d'une chane de caractres de120 bits (par exemple, 302dvbynpstxl3iOrugglb45), dont l'unicit estgarantie grce l'utilisation d 'un a lgorithme spcifique. De plus, la
structure de cette chane est non trivia le, ce quivite qu'elle soitmanipule l'insu du systme (par exemple, pour se faire passerpour quelqu'und'autre).
Quand un nouvel util isateur appelle une page d'une applicationASP.NET pour la prem ire fois, un nouvel identificateur lui est attribu.Celui-ci accompagne ensuite toutes les rponses du systme et lesdemandes de l'usager, ce qui permet de l'identifier. Deux techniquespeuventtre utilises pour cela : un cookie particulier enregistr surle poste de l'utilisateur, ou l'inclusion de l'identificateur dans l'URL,essentiellement si les cookies ne sont pas autoriss par lenavigateurde l'utilisateur.
Pour accder aux informations d'une session, la classe Page exposeune proprit, Session, quiretourne une r frence un objetHttpSessionState. Celui-ci dispose de proprits et de mthodes,dont la proprit SessionID qui renvoie l'identificateur de session
OFPPT @Document Millsime PageC-A-001.doc mars 09 29 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
32/105
Dvelopper des composants serveur
courant. On peutcrire, pour placer l'identificateur de session dans uncontrle label appel IblSessionID :
| IbISessionID.Text = Session.SessionID
Le rsultat est une chane de caractres comprenant l'identificateurde session (voir l'exemplesuivant).
La configuration de la faon dont la session fonctionne
se fait dans le fichier Web.config, situ dans le rpertoire
d'une application Web. Il s'agit d 'un fichier XML
comprenant, entre autres, une balise appele
sessionState qui fait partie de la section System.web du
fichier. Cette balise comprend plusieurs attributs qui
dfinissent les caractristiques de la session
L e s a t tr ib u t s d e la s e c t io n S y s t e m .w e b d u f ic h i e r d e c o n f ig u r a t io n w e b . c o n f ig
Voici le contenu de cette cette
section:
-
8/2/2019 23417901 Cours ASP Net Complet
33/105
Dvelopper des composants serveur
stateConnectionString="tcpi p=12 7 . 0 . 0 . 1 : 42424"
sqlConnectionString="datasource=127.0.0.1;user
id=sa;password="
cookieless="false"timeout="20"
/>
Quand l'attribut cookieless a sa valeur par dfaut False, le SessionID esttransmis sur le postede l'utilisateur par l'intermdiaire d'un cookie. En
revanche, si on donne cookieless la valeurTrue, le SessionID esttransmis dans l'URL, sous la forme d'un pseudo-rpertoire dont le nomest la valeur de l'identificateur.
OFPPT @Document Millsime PageC-A-001.doc mars 09 31 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
34/105
Dvelopper des composants serveur
L'attr ibut mode indique l'emplacement de stockage des
variables. La modification de la valeur de ce t attribut peut avoir une
influence sur les performances et sur la disponibilit des donnes
de session. Les valeurs possibles sont les suivantes :
Of f, les donnes de session ne sont pas gardes. Les variables de session ne doiventdoncpa s tre utilises s i m od e a cette va leur.
InProc, les donnes de session sont stockes en mmoire sur le serveur. Cette valeurdonne les meilleures performances (il s'agit d'ailleurs de la valeur par dfaut), mais nepermet pas de conserver les donnes en cas de panne ou d'utilisation de plusieurs ser-veurs ou processus.
StateServer, les donnes de session sont gardes sur le serveur identifi par la valeurde stateConnectionString. Cette chane doit comprendre l'adresse du serveur suiviedu port utiliser, qui est par dfaut 42424. La valeur par dfaut,
tcpip=127.0. 0.1:42424, indiqueque les donnes sont stockes sur le serveur local(l'adresse IP 127.0.0.1 identifie le serveur local).
SQLSe rver, les donnes de session sont stockes sur le serveur SQ L S erver identif i parla valeur de sqlConnectionString. Il s'agit d'une chane de connexion SQL Server.
Les deux dernires options sont particulirement intressantes et n'existaient pas dans lesversions prcdentes d'ASP. Elles permettent de partager les donnes de session entreplusieursprocessus.
La valeur StateServer indique que les donnes de la session sont places sur le serveurspcifi par stateConnectionString (un serveur d'tat). On peut alors envisager deuxconfigurations :
II n'existe qu'un serveur Web, mais plusieurs processus peuvent faire fonctionner lamme application. L'utilisation de cette valeur permet de ne pas lier un utilisateur unprocessusparticulier. La valeur InProc ferait que, si l'utilisateurtait connect unprocessus diffrent d'une page l'autre, les valeurs de ses variables de sessionseraient perdues.
Quand plusieurs serveurs Web sont utiliss pour la mme application (on parle deferme de serveurs), le serveur d'tat peut tre commun l'ensemble des serveursWeb. De cette faon, les demandes d'un utilisateur ne sont pas lies un serveurphysique particulier et la rpartition de charge entre les serveurs peuttre pleinementexplo ite.
OFPPT @Document Millsime PageC-A-001.doc mars 09 32 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
35/105
Dvelopper des composants serveur
La valeur SQLState de l'attribut mode permet d'aller encore plus loin, puisque lesdonnes des variables d'application sont places sur un serveur SQL Server. Decette faon, mme si unserveur Web tombe en panne, les donnes ne sont pasperdues.
Le dernier attribut de la balise sessionState, timeout, indique le temps d'inactivit, en
minutes,aprs lequel la session est ferme. Par dfaut, cette valeur est de vingt minutes.La fermeture d'une session permet de librer toutes les donnes qui lui sont associes. Sil 'application gre des donnes sensibles, comme un compte en banque, i l peut treprfrable de diminuer cette valeur, afin de ne pas garder en mmoire des donnesconcernant un utilisateur qui n'utilise plus l'application. On peut d'ailleurs forcer une fin desession, en appelant la mthode Abandon :
| S e s s i o n . A b a n d o n
Cela peut tre effectu, par exemple, en rponse un clic de l'utilisateur sur un bouton dedconnexion plac sur la page. Aprs la fermeture d'une session, automatiquement ou
manuellement, toutes ses donnes sont dtruites.
Les variables de session
Comme les variables d'application, les variables de session sont simplement fabriques enles nommant : si la variable existe, elle est utilise, sinon efle est cre. Pour donner unevaleur la variable de session Nom , on peut simplem ent crire :
Session('Nom") = "Nouvelle valeur" -
I II n'est pas ncessaire de mettre en uvre un m canisme de synchronisation pour les variables de session| car elles ne sont norm alement rejointes que par u n seul thread, n'tant lies qu' un seul utilisateur.
L'initialisation des variables de session peut se faire dans une procdure Session_OnStart (ouSession_Start) et Session_OnEnd permet d'effectuer les traitements de fin de session. Cesdeux procdures doivent tre crites dans le fichier global .asax, comme cela a t expliqudans lasection relative aux variables d'application.
La page A fficheNomSess ion affiche une variable de session initialise lors de la saisie du nomde l'util isateur dans la page Sai si eNom. Elle affiche galement la valeur d'une variableinitialise dans la procdure Sess ion_OnStart .
OFPPT @Document Millsime PageC-A-001.doc mars 09 33 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
36/105
-
8/2/2019 23417901 Cours ASP Net Complet
37/105
Dvelopper des composants serveur
La valorisation de la variable la suite de la saisie du nom est effectue par le code suivantPrivate Sub btnOKSession_Click(...) Handles btnOKSession.ClickSession("Nom") = txtNom.TextRespo nse.Red i rect("AfficheNo mSessi
on.aspx")E n d S u b
L'initialisation des variables dans global .asax est :Sub Application_OnStart(ByVal sender As Object, ByVal e As EventArgs)
Application("OnStart") = "Donne initiaise dans
Application_OnStart"
E n d S u b
Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)Session("Start") = "Donne initialise dansSession_Start" E n d S u b
Enfin, l'affichage des variables est ralis par le code suivantPrivate Sub Page_Load(...) Handles MyBase.LoadIblNom.Text = Session("Nom")IbISessionID.Text = Session.SessionIDIblSession.Text = Session("Start")IblSessionl.Text = Session("OnStart")E n d S u b
OFPPT @Document Millsime PageC-A-001.doc mars 09 35 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
38/105
Dvelopper des composants serveur
Le contexteLa proprit Context d'une page retourne l'objet HttpContext associ la page. Celui-ci fournitdes informations sur la requte HTTP ayant provoqu son appel. Parmi les membres de la classe
HttpContext, la proprit Handler donne accs un objet HttpHandler qui reprsente la pagel'origine de l'appel. Cela permet d'accder ses donnes.
Pour que le contexte permette de rcuprer les donnes de la page prcdente, il faut quel'appel dela page se fasse l'aide de la mthode Server.Transfer et non pasResponse.Redirect.
|les donnes du co ntexte ne sont valides q ue pou r la requte en cours. Elles sont donc perdues lors de la requtesuivante.
L'utilisation du contexte peut se faire en castant la proprit Handler en un type correspondant la page appelante. La ligne suivante permet d'accder la proprit Nom dfinie dans lapage
SaisieNom:
Private Sub Page_L oa d(... ) Han dles MyB as e.Lo ad
IblNom.Text = CType(context.Handler, SaisieNom).Nom E n d S u b
Voici le code de la page SaisieNom
' Proprit Nom pour le contexte Public ReadOnlyProperty Nom() As String
Cet
Return txtNom.TextEnd Get
End P roperty
Private Sub btnOKContext_Click(...) Handles btnOKContext.Click
'Utilise Server.Transfer au lieu de Response.RedirectServer.Transfer("AfficheNomContext.aspx")
E n d S u b
OFPPT @Document Millsime PageC-A-001.doc mars 09 36 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
39/105
Dvelopper des composants serveur
L e c a c h e
Le cache d'ASP.NET est un lieu de stockage de donnes qui peut tre utilis la foispour cacherdes pages, c'est--dire les mmoriser afin d'viter de les rgnrer chaque demande, et pour enregistrer des donnes. Pour le stockage de donnes, lecache ressemble donc l'objet Application dans la mesure o les valeurs qui y sontplaces sont prives l'application. Mais lecachedispose galement de mcanismescomplmentaires qui permettent de contrler la durede vie des donnes qu'ilcontient en librant la mmoire quand elle n'est pas utilise, ou deconditionner lesdonnes des ressources externes.
Placer des donnes dans le cache se fait trs simplement, comme pour l'objet
Application :
Private Sub btnOKCache_Click(...) Handles btnOKCache.ClickCache("Nom") = txtNom.TextResponse.Redirect("AfficheNomCache.aspx")
E n d S u b
On peut galement utiliser les mthodes Insert et Add de l'objet Cache pour ajouterdes donnes dans le cache. Ces mthodes peuvent recevoir des paramtrescomplmentaires permettant dedfinir, notamment, la dure de vie des donnes.
L'obtention des donnes du cache se fait tout aussi simplement (figure 7-14) :
Private Sub Page_Load(...) Handles MyBase.LoadIblNom.Text = Cache("Nom")
E n d S u b
OFPPT @Document Millsime PageC-A-001.doc mars 09 37 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
40/105
Dvelopper des composants serveur
RsumNous avons vu que si la gestion de l 'tat est un vritable problme pour lesapplications Web, elle dispose galement de nombreuses solutions. Plusieursmcanismes permettent de stocker les donnes d'une page sur le client, ou sur leserveur. Des techniquesnouvelles dans ASP.NET permettent m me de stocker lesdonnes sur un serveur partag parplusieurs serveurs Web.
OFPPT @Document Millsime PageC-A-001.doc mars 09 38 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
41/105
Dvelopper des composants serveur
1.3.6. Variable de session
"Session" est un objet qui s'utilise un peu comme le ViewState,c'est--dire avec une cl mais se comporte plutt comme une table de
hachage. Prenons deux pages aspx :page1.aspx : page dans laquelle nous encodons, par l'intermdiaire d'uneTextBox, un nom de socitpage2.aspx : page dans laquelle nous affichons le nom de la socit(vous comprenez que le but est d'avoir une page d'affichage de donnesde socit se trouvant par exemple dans une base de donnes)
Protected Sub cmdAfficheSoc (Byval sender As Object, ByVal eAs System.EventArgs) Handles cmdAfficheSoc.Click
Session("NomSoc") = txtNomSoc.TextResponse.Redirect("page2.aspx")
End Sub
Code de la page1.aspx : L'utilisateur introduit un nom de socit dans laTextBox nomme "txtNomSoc". Cette information est sauve en Sessionavant de passer la page2.aspx
Protected Sub Page_Load (Byval sender As Object, ByVal e AsSystem.EventArgs) Handles Me.LoadIf Session("NomSoc") IsNot Nothing Then
lblNomSoc.Text = CType(Session("NomSoc"), String)Else
Response.Write("Aucune socit n'a t choisie !")End IfEnd Sub
Code de la page2.aspx : Un test est effectu pour savoir si la variable desession contient bien une donne. Celle-ci est affiche en passant par untranstypage.
Il est vident que cet exemple est trs simpliste et que l'objet Sessionpermet bien d'autres utilisations. Voici quelques points lis l'objetSession (liste non exhaustive) :
Initialisation de l'objet Session : vnements Session_Start etSession_End dclenchs par le serveur et accessibles via le fichierGlobal.asax Expiration de la session Session avec ou sans cookies Session scurise
1.3.7. Variable d'application
OFPPT @Document Millsime PageC-A-001.doc mars 09 39 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
42/105
Dvelopper des composants serveurLa grande diffrence avec l'objet Session se situe dans le fait qu'un objetApplication conserve des donnes pour l'ensemble des utilisateursd'un mme site web. Il s'utilise de la mme manire que l'objet Session.
Protected Sub Page_Load (Byval sender As Object, ByVal eAs System.EventArgs) Handles Me.LoadDim cpt As Integer = 0
Application.Lock()If Application("Compteur") IsNot Nothing Then
cpt = CType(Application("Compteur"), Integer)End Ifcpt = cpt + 1
Application("Compteur") = cptApplication.UnLock()lblVisite.Text = "Page vue : " & cpt & " fois."End Sub
L'objet Application tant commun tous les utilisateurs du site, il est
prfrable de bloquer l'accs lors de l'criture et, bien entendu, de ne pasoublier l'action inverse.
1.3.8. L'objet Cache
Comme l'objet Application, il conserve aussi des donnes accessibles tous les utilisateurs mais il possde quelques avantages non ngligeables:
Gestion interne de locking Plus rapide Gestion des dpendances
En ce qui concerne les dpendances, on peut en citer quelques-unestrs succinctement car ce genre de programmation demanderaitpresque un tutoriel elle toute seule !
Dpendances de temps : permet de faire expirer automatiquementune donne une date/heure absolue
Dpendances fichiers : le serveur d'application peut mettre jour des donnes lorsque celles-ci sont modifies dans le fichierassoci Dpendances SQL : sous SqlServer 2000 et 2005. Agit de lamme manire avec une base de donnes grce au "poling"(interrogation du serveur vers la BD). le callback : association d'une procdure qui est rappele, nonpas ds que la donne est supprime mais la prochaine excutionde la page qui contient la procdure
1.3.9. Caching (ou cache HTML)
Un autre aspect de la mise en cache des donnes suivant diversesmthodes. Ici aussi, il serait trop long d'tendre leur mode d'utilisation.
OFPPT @Document Millsime PageC-A-001.doc mars 09 40 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
43/105
Dvelopper des composants serveur Cache de sortie (output cache) : prend une "copie" instantane du
flux HTML puis supplante toute action de requte en imposant sa"copie" garde en cache
substitution : ce contrle permet de ne pas mettre en cache unepartie de la page mme si le cache est activ
profils de cache : peuvent tre crs dans le Web.Config et associpar leur nom aux pages qui en ont besoin
fragments de cache : fonctionne comme le cache de sortie mais donnela possibilit au programmeur de ne mettre en cache qu'une partie dela page HTML. Le frament caching peut se faire grce aux usercontrolsqui disposent eux-mmes d'une directive Output
1.3.10. QueryString
QueryString permet de faire passer des informations via l'URI d'une page
une autre.En reprenant l'exemple d'un ID de socit slectionn dans une pagedont les donnes sont prsentes dans une autre page, on aurait trsbien pu indiquer cet ID via l'URI lors de l'appel la deuxime page.
Vous avez choisi la socit ayant un ID = 1235, voici comment passerl'identifiant la page suivante :
Pour rcuprer l'ID dans la seconde page, il vous suffira de coder commesuit :
Vous avez choisi la socit : &Request.QueryString("idsoc")
Vous comprenez maintenant le pourquoi de certaines url complexes dugenre :http://www.monsite.com/repertoire/liste.asp?id=1257&lng=fr&action=del&[email protected]
1.4. Contrles utilisateur ASP.NET
Il peut arriver que vous ayez besoin dans un contrle de fonctionnalitsdont les contrles serveur Web ASP.NET intgrs ne disposent pas. Vouspouvez alors crer vos propres contrles. Pour ce faire, vous disposez dedeux options : Vous pouvez crer :
o Des contrles utilisateur. Les contrles utilisateur sont desconteneurs dans lesquels vous pouvez placer des balises et descontrles serveur Web. Vous pouvez ensuite traiter le contrleutilisateur comme une unit et lui assigner des proprits et desmthodes.
o Des contrles personnaliss. Un contrle personnalis est uneclasse que vous crivez et qui drive de Control ou de WebControl.
OFPPT @Document Millsime PageC-A-001.doc mars 09 41 - 105
http://msdn.microsoft.com/fr-fr/library/system.web.ui.control(VS.80).aspxhttp://msdn.microsoft.com/fr-fr/library/system.web.ui.webcontrols.webcontrol(VS.80).aspxhttp://msdn.microsoft.com/fr-fr/library/system.web.ui.webcontrols.webcontrol(VS.80).aspxhttp://msdn.microsoft.com/fr-fr/library/system.web.ui.control(VS.80).aspx -
8/2/2019 23417901 Cours ASP Net Complet
44/105
Dvelopper des composants serveurLes contrles utilisateur sont beaucoup plus faciles crer que lescontrles personnaliss, dans la mesure o vous pouvez rutiliser descontrles existants. Il est donc particulirement facile de crer descontrles comportant des lments d'interface utilisateur complexes.Cette rubrique fournit une vue d'ensemble de l'utilisation des contrlesutilisateur ASP.NET.
1.4.1. Structure de contrle utilisateur
Un contrle Web ASP.NET ressemble une page ASP.NET complte (fichier.aspx), avec la fois une page d'interface utilisateur et du code. Un contrle
utilisateur se cre de faon trs semblable une page ASP.NET. On lui ajoute parla suite le balisage et les contrles enfants ncessaires. Tout comme une page,un contrle utilisateur peut inclure du code servant manipuler son contenu, etnotamment effectuer des tches telles que des liaisons de donnes.Un contrle utilisateur prsente les diffrences suivantes par rapport une pageWeb ASP.NET :
L'extension du nom de fichier du contrle utilisateur est .ascx.
Au lieu d'une directive @ Page, le contrle utilisateur contient une directive
@ Control qui dfinit la configuration et d'autres proprits.
Les contrles utilisateur ne peuvent pas s'excuter comme des fichiers
autonomes. Vous devez au lieu de cela les ajouter des pages ASP.NET,
comme vous le feriez pour n'importe quel contrle.
Le contrle utilisateur ne contient pas d'lment htmlbody ou form. Ces
lments doivent se trouver dans la page d'hbergement.
Vous pouvez utiliser sur un contrle utilisateur les mmes lments HTML (sauf
les lments html, body ou form) et les mmes contrles Web que dans une
page Web ASP.NET. Par exemple, si vous crez un contrle utilisateur afin de
l'utiliser comme barre d'outils, vous pouvez placer dessus une srie de contrles
serveur Web Button et crer des gestionnaires d'vnements pour les boutons.
L'exemple suivant montre un contrle utilisateur qui implmente un contrle
Spinner dans lequel les utilisateurs peuvent cliquer leur guise sur des boutons
pour naviguer dans une srie de choix au sein d'une zone de texte.
OFPPT @Document Millsime PageC-A-001.doc mars 09 42 - 105
http://msdn.microsoft.com/fr-fr/library/ydy4x04a(VS.80).aspxhttp://msdn.microsoft.com/fr-fr/library/d19c0t4b(VS.80).aspxhttp://msdn.microsoft.com/fr-fr/library/d19c0t4b(VS.80).aspxhttp://msdn.microsoft.com/fr-fr/library/system.web.ui.webcontrols.button(VS.80).aspxhttp://msdn.microsoft.com/fr-fr/library/ydy4x04a(VS.80).aspxhttp://msdn.microsoft.com/fr-fr/library/d19c0t4b(VS.80).aspxhttp://msdn.microsoft.com/fr-fr/library/system.web.ui.webcontrols.button(VS.80).aspx -
8/2/2019 23417901 Cours ASP Net Complet
45/105
-
8/2/2019 23417901 Cours ASP Net Complet
46/105
Dvelopper des composants serveur
1.4.2. Ajout d'un contrle utilisateur une page
Pour utiliser un contrle utilisateur, vous devez l'inclure dans une page WebASP.NET. Lorsqu'une demande est soumise concernant une page et que cettepage contient un contrle utilisateur, celui-ci passe par toutes les tapes dutraitement qu'effectuent tous les contrles serveur ASP.NET.
Pour insrer un contrle utilisateur dans une page Web Forms
1. Dans la page Web ASP.NET conteneur, crez une directive @ Register
comprenant :
Un attribut TagPrefix, qui associe un prfixe au contrle utilisateur.
Ce prfixe sera inclus dans la balise d'ouverture de l'lment du
contrle utilisateur.
Un attribut TagName, qui associe un nom au contrle utilisateur.Ce nom sera inclus dans la balise d'ouverture de l'lment du contrle
utilisateur.
Un attribut Src, qui dfinit le chemin d'accs virtuel au fichier
contrle utilisateur que vous incluez.
2. Dans le corps de la page Web, dclarez l'lment contrle utilisateur
l'intrieur de l'lment form.
3. ventuellement, si le contrle utilisateur expose des proprits publiques,dfinissez-les de faon dclarative.
1.5. Validation des donnes
La validation des donnes est en gnral la chose la plus importante dans un siteweb. Ici, nous allons pouvoir travailler ct client et ct serveur, c'estindispensable pour prvenir au plus tt l'utilisateur d'une erreur ventuelle. Eneffet, il est inutile d'envoyer une demande au serveur si l'information transmiseest errone : cela gnre une perte de temps et un encombrement inutile duserveur.
La validation ct client est donc celle qui intervient la premire et se fait engnral en JavaScript. ASP.NET fournit des contrles de validation qui gnrentle code javascript associ, vous vitant de connatre fond le langage et dedevoir taper le code.
Les principaux contrles de validation sont :
RequiredFieldValidator RangeValidator
OFPPT @Document Millsime PageC-A-001.doc mars 09 44 - 105
http://msdn.microsoft.com/fr-fr/library/c76dd5k1(VS.80).aspxhttp://msdn.microsoft.com/fr-fr/library/c76dd5k1(VS.80).aspx -
8/2/2019 23417901 Cours ASP Net Complet
47/105
Dvelopper des composants serveur CompareValidator RegularExpressionValidator CustomValidator ValidationSummary
Voyons un peu les caractristiques gnrales de chacun.
1.5.1. RequiredFieldValidator
Le plus frquemment utilis car il est le seul qui peut s'assurer qu'un champn'est pas vide. En effet, tous les autres contrles de validation acceptent unchamp vide donc, associer ce contrle de validation aux autres contrles permetcette vrification essentielle.Le RequiredFieldValidator a donc pour fonction de vrifier qu'un champ a tmodifi. Ses proprits principales renseigner sont :
Nom de laproprit
Utilisation
ControlToValidate doit contenir le nom du contrle valider
ErrorMessagemessage afficher en cas d'erreur dans le contrleValidationSummary
InitialValuecontient une valeur qui invalide le contrle si celui-ci est gal cette valeur prcise
Text texte affich en cas de non validation
Exemple de RequiredFieldValidator sur une TextBox nomme TxtNom :
Vous remarquez que pour valider le nom qui est obligatoire, il nous faut 2contrles RequiredFieldValidator.Un pour signaler que le nom ne peut pas tre un champ vide, l'autre pourinterdire l'utilisation du nom "Admin".
1.5.2. RangeValidator
Comme son nom l'indique, il sera utilis pour valider l'encodage entre desbornes donnes. Par exemple, encoder un nombre entre 1 et 10.Les proprits sont pratiquemment identiques celles du contrle
prcdent :
OFPPT @Document Millsime PageC-A-001.doc mars 09 45 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
48/105
Dvelopper des composants serveurNom de la proprit Utilisation
ControlToValidate doit contenir le nom du contrle valider
ErrorMessagemessage afficher en cas d'erreur dans lecontrle ValidationSummary
MinimumValue valeur minimale de la plage de donnes
MaximumValue valeur maximale de la plage de donnes
Text texte affich en cas de non validation
Exemple de validation entre 1 et 10 :
-
8/2/2019 23417901 Cours ASP Net Complet
49/105
Dvelopper des composants serveurproprit ValidationExpression qui correspond videmment l'expressionrgulire de test.Un petit exemple de validation d'un numro de compte bancaire pour en voirl'application :
-
8/2/2019 23417901 Cours ASP Net Complet
50/105
Dvelopper des composants serveur La proprit ClientValidationFunction contient le nom de la fonction La fonction doit tre sous la forme : Function ValidationPersonnelle (source,
arguments) la source est l'objet CustomValidatorct client arguments est un objet comportant deux proprits : Value et IsValid La proprit Value est la valeur valider La proprit IsValid est un boolen retournant le rsultat de la validation
La validation ct client s'effectue avec du code javascript soit entre les balisesad hoc, soit dans un fichier ".js" spar.Ce genre de code est bien connu des dveloppeurs javascript :
function Validation (obj, args){}
Dans le cas d'une validation ct serveur :Placez le code de validation dans l'vnement OnServerValidate
1.5.6. ValidationSummary
Ce contrle n'est pas un contrle de validation proprement parler, ilsert afficher sous diffrentes formes le rsultat de tous les contrles devalidation sur la page aspx si une erreur est survenue. Il est bien videntque vous pouvez l'omettre et grer vous-mme un affichage d'erreur.
Le contrle ValidationSummarys'affiche ds que la proprit IsValidde lapage est False.Il interroge les diffrents contrles non valides et rcupre la valeur deleur proprit ErrorMessage.Pour afficher le rsultat, vous avez les DisplayMode suivants votredisposition :
List: simple liste BulletList: liste avec puces SingleParagraph : les messages d'erreur sont concatns les uns la suite
des autres, spars par une virgule
L'emplacement de l'affichage peut s'effectuer de deux manires :
l'emplacement du contrle ValidationSummary: mettre sa propritShowSummary = True
dans une boite de dialogue : mettre sa proprit ShowDialog = True
Il est aussi intressant de s'arrter un peu la proprit ValidationGroup
des contrles utilisateurs. En effet, regrouper certains contrles sous un
mme nom dans la proprit ValidationGroup permet de valider d'abord
une srie de champs puis une autre suivant le rsultat de la premire
validation.
OFPPT @Document Millsime PageC-A-001.doc mars 09 48 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
51/105
Dvelopper des composants serveur
2.Laccs aux donnes avec ASP.NET
2.1. Introduction
Les applications Web accdent souvent des sources de donnes aux finsde stockage et de rcupration de donnes dynamiques. Vous pouvez
crire du code pour accder aux donnes l'aide de classes de l'espace de
Sy noms System.Data (connu sous le nom ADO.NET) et de l'espace de
noms stem.Xml. Il s'agissait de l'approche gnralement adopte dans les
versions antrieures d'ASP.NET.
Toutefois, ASP.NET permet galement d'excuter la liaison de donnes de
faon dclarative. Cette liaison n'exige aucun code pour les scnarios dedonnes les plus courants, et notamment :
la slection et l'affichage de donnes ;
le tri, la pagination et la mise en cache de donnes ;
la mise jour, l'insertion et la suppression de donnes ;
le filtrage de donnes l'aide de paramtres d'excution ;
la cration de scnarios matre/dtails l'aide de paramtres.
ASP.NET inclut deux types de contrles serveur qui interviennent dans le
modle de liaison de donnes dclaratif : les contrles de source de
donnes et les contrles lis aux donnes. Ces contrles grent les tches
sous-jacentes exiges par le modle Web sans tat pour l'affichage et la
mise jour des donnes dans les pages Web ASP.NET. En consquence,
vous n'tes pas tenu de connatre tout le droulement du cycle de vie des
demandes de page pour excuter la liaison de donnes.
2.2. Contrles de source de donnes
Les contrles de source de donnes sont des contrles ASP.NET qui grent
les tches de connexion une source de donnes et de lecture et
d'criture de donnes. Les contrles de source de donnes ne gnrent
pas le rendu d'une interface utilisateur. Au lieu de cela, ils jouent le rle
d'intermdiaires entre un magasin de donnes particulier (base de
donnes, objet mtier ou fichier XML) et d'autres contrles de la page WebASP.NET. Les contrles de source de donnes offrent des fonctionnalits
OFPPT @Document Millsime PageC-A-001.doc mars 09 49 - 105
http://msdn2.microsoft.com/fr-fr/library/system.xml(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.data(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.xml(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.data(VS.80).aspx -
8/2/2019 23417901 Cours ASP Net Complet
52/105
Dvelopper des composants serveurpuissantes de rcupration et de modification de donnes, et notamment
en termes de requtes, de tri, de pagination, de filtrage, de mise jour,
de suppression et d'insertion. ASP.NET comprend les contrles de source
de donnes suivants :
Contrle de source dedonnes Description
ObjectDataSource Permet d'utiliser un objet mtier ou une autre classeet de crer des applications Web qui s'appuient surdes objets de couche intermdiaire pour grer desdonnes.
SqlDataSource Permet d'utiliser les fournisseurs de donnesmanags ADO.NET, lesquels offrent un accs auxbases de donnes Microsoft SQL Server, OLE DB,
ODBC ou Oracle.
AccessDataSource Permet d'utiliser une base de donnes MicrosoftAccess.
XmlDataSource Permet d'utiliser un fichier XML, ce qui est trs utilepour les contrles serveur ASP.NET hirarchiquestels que les contrles TreeView ou Menu.
SiteMapDataSource Utilis avec la navigation de site ASP.NET.
Les contrles de source de donnes peuvent galement tre tendus pour
prendre en charge d'autres fournisseurs d'accs au stockage des donnes.
2.3. Contrles lis aux donnes
Les contrles lis aux donnes gnrent le rendu des donnes en tant que
balises au navigateur qui envoie la demande. Un contrle li aux donnes
peut se lier un contrle de source de donnes et extraire
automatiquement des donnes au moment opportun dans le cycle de vie
de la demande de page. Les contrles lis aux donnes peuvent tirer partides fonctionnalits fournies par un contrle de source de donnes, et
notamment le tri, la pagination, la mise en cache, le filtrage, la mise
jour, la suppression et l'insertion. Un contrle li aux donnes se connecte
un contrle de source de donnes via sa proprit DataSourceID.
ASP.NET comprend les contrles lis aux donnes dcrits dans le tableau
suivant.
OFPPT @Document Millsime PageC-A-001.doc mars 09 50 - 105
http://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.objectdatasource(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.sqldatasource(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.accessdatasource(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.xmldatasource(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.treeview(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.menu(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.sitemapdatasource(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.basedataboundcontrol.datasourceid(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.objectdatasource(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.sqldatasource(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.accessdatasource(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.xmldatasource(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.treeview(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.menu(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.sitemapdatasource(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.basedataboundcontrol.datasourceid(VS.80).aspx -
8/2/2019 23417901 Cours ASP Net Complet
53/105
Dvelopper des composants serveur
Contrles de liste
Gnre le rendu des donnes dans divers formats de liste. Les contrles de type liste
incluent les contrles BulletedList, CheckBoxList,DropDownList,ListBoxet
RadioButtonList.
Contrle fonctionnementAdRotator Gnre le rendu des annonces dans une page en tant
qu'images sur lesquelles les utilisateurs peuvent cliquer
pour accder une URL associe l'annonce.
Datalist Gnre le rendu des donnes dans une table. Le rendu de
chaque lment est gnr l'aide d'un modle d'lment
que vous dfinissez.
DetailsView Affiche un seul enregistrement la fois sous une forme
tabulaire et permet de modifier, de supprimer et d'insrer
des enregistrements. Vous pouvez galement parcourir
plusieurs enregistrements.
OFPPT @Document Millsime PageC-A-001.doc mars 09 51 - 105
http://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.bulletedlist(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.checkboxlist(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.checkboxlist(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.dropdownlist(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.dropdownlist(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.listbox(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.listbox(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.radiobuttonlist(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.adrotator(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.detailsview(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.bulletedlist(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.checkboxlist(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.dropdownlist(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.listbox(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.radiobuttonlist(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.adrotator(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.detailsview(VS.80).aspx -
8/2/2019 23417901 Cours ASP Net Complet
54/105
Dvelopper des composants serveurFormView Semblable au contrle DetailsView, mais permet de dfinir
une prsentation de formulaire libre pour chaque
enregistrement. Le contrle FormView ressemble au
contrle DataList pour un enregistrement unique.
GridView Affiche des donnes dans un tableau et propose une
assistance pour l'dition, la mise jour, le tri et lapagination des donnes sans ncessiter de code.
Menu Gnre le rendu des donnes dans un menu dynamique
hirarchique qui peut inclure des sous-menus.Repeater Gnre le rendu des donnes dans une liste. Le rendu de
chaque lment est gnr l'aide d'un modle d'lment
que vous dfinissez.TreeView Gnre le rendu des donnes dans une arborescence
hirarchique de nuds qu'il est possible de dvelopper.
3.Master Page
3.1. Introduction aux MasterPages
Depuis longtemps, les dveloppeurs ont toujours t contraint dedupliquer les sources HTML du design sur chaque page. Dautre solutionintermdiaire existait, par exemple lutilisation des frames en HTML,cependant cette fonction appartient au langage HTML et prsentebeaucoup de problme, notamment au niveau des emplacements, de plusles frames sont de moins en moins utilises de nos jours. La fonctionnalit
MasterPage a longtemps t demande par les dveloppeurs, ellenexistait toujours pas dans les versions prcdentes de lASP.NET, grceau MasterPage vous allez enfin pouvoir sparer les sources du design aucode pur. En effet, intgr la version 2.0, vous pouvez sparer la partiedveloppement du design et dveloppement fonctionnel du site, vousnavez plus besoin de dployer les sources du design sur chaque page dusite.
La MasterPage (extension *.master) contiendra la source (X)HTML dudesign et des zones ddition (contentPlaceHolder), permettant ainsi decrer plusieurs page (contentPage) du mme design. Il suffit ensuite de
modifier les zones dditions sur chaque page. Par exemple, si lonconsidre que le site de SUPINFO (www.supinfo.com) est en ASP.NET 2.0,
OFPPT @Document Millsime PageC-A-001.doc mars 09 52 - 105
http://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.formview(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.gridview(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.repeater(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.formview(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.gridview(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.repeater(VS.80).aspx -
8/2/2019 23417901 Cours ASP Net Complet
55/105
Dvelopper des composants serveurune MasterPage est suffisante pour le design, ensuite chaque page feraappel cette MasterPage dans len-tte, et chaque page devra insrerleurs informations spcifiques dans les zones dditions imposer dans laMasterPage
3.2. Cration d'une MasterPage
Pour crer une MasterPage, faites un clique-droit sur le nom votreWebSite, puis sur Add a New Item .
Fig 1.1 Crer un nouvel item
Une fentre apparatra, il vous suffira de choisir MasterPage et derenommer, si vous le souhaitez, le nom de la MasterPage.
Fig 1.2 Crer un item MasterPage
Vous remarquerez que len-tte de la MasterPage contient le mot-cl Master , la diffrence dune page simple qui contient le mot-cl Page.
OFPPT @Document Millsime PageC-A-001.doc mars 09 53 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
56/105
Dvelopper des composants serveur
Il suffit ensuite dinsrer des zones dditions (contentPlaceHolder) auxendroits souhaiter grce aux balise asp:contentPlaceHolder.
Voici un exemple simple de design avec 3 contentPlaceHolder :
Test body { font-size:14px; font-family:verdana; font-weight:bold; text-align:center;
}
OFPPT @Document Millsime PageC-A-001.doc mars 09 54 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
57/105
Dvelopper des composants serveur
Fig 1.3 Exemple d'une MasterPage
Attention ne rien rajouter dans les balises contentPlaceHolder si voussouhaitez diter completement la zone. Par exemple si lon rajoute uneimage dans la zone top de la MasterPage (exemple ci-dessus), cetteimage apparatra sur toutes les pages faisant appel cette MasterPage.
3.3. Mise en place d'une MasterPagePour appliquer une MasterPage sur une nouvelle page, il faut tout dabordenlever toute la source HTML qui vous ne sera pas utile, laisseruniquement len-tte :
Rajouter ensuite le paramtre MasterPageFile avec lURL de la MasterPage appliquer.
OFPPT @Document Millsime PageC-A-001.doc mars 09 55 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
58/105
Dvelopper des composants serveur
Enfin, il suffit de rajouter des balises contentPlaceHolder avec lID duncontentPlaceHolder de la MasterPage, en voici un exemple :
TOP: HELLO, HOW ARE YOU?BOTTOM LEFT: SUPINFOBOTTOM RIGHT: 2005-2006
Voici le rsultat de notre exemple :
Fig 1.4 Exemple d'une page avec MasterPage
Les IDs des contentPlaceHolder sont uniques et laffichage des IDsdisponiblent lors de lauto-compltion correspondent aux IDs descontentPlaceHolder de la MasterPage appelle.
3.4. Conclusion
Ainsi cette nouvelle fonctionnalit facilite la tche du dveloppeur ensparant le design du code, mais allge aussi larchitecture de lapplicationWEB. Grce au MasterPage en ASP.NET 2.0, vous naurez plus besoin de
OFPPT @Document Millsime PageC-A-001.doc mars 09 56 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
59/105
Dvelopper des composants serveurdupliquer le code source du design sur chaque page. Il est bien entendupossible de crer des MasterPage dynamiquement dans le code-behind, decrer dimbriquer des MasterPage.
4.Thmes ( apparences(Skins) et feuilles Css)
4.1. Introduction aux thmes
Les MasterPages facilitant la mise en place et la duplication du design surtoutes les pages dune application WEB.
Il manque cependant le formatage du site :
les couleurs les polices la taille des tableaux la taille des diffrents composants etc.
Cest l quinterviennent les thmes, plus exactement la mise en place dun
style sur un site.Avant ce sont des CSS (Cascading Style Sheet),mais ils ne permettent pasle formatage des contrles ASP.NET.
4.2. Cration d'un thme
Les thmes sont stocks obligatoirement dans le dossier App_Themes(crer)compos au minimum dun fichier Skin (*.skin),sinon de plusieursfichier skin et Css.(bouton droit sur le projet /Ajouter le dossierASP.NET/Thmes)
Ajouter ensuite un nouveau fichier Skin ou CSS votre thme, il suffittout simplement de faire un clique-droit sur le thme et Add New Item .
OFPPT @Document Millsime PageC-A-001.doc mars 09 57 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
60/105
Dvelopper des composants serveur
4.3. Les fichiers Skins
Les fichiers Skins sont composs essentiellement de contrle ASP.NET
avec leurs proprits de formatage (police, couleur, taille).Vous avez la possibilit dajouter :
des contrles communs (sans SkinID) des contrles spcifiques (avec SkinID).
Si le thme est appliqu :
les contrles communs sappliqueront tous les contrles dumme type.
les contrles spcifiques seront appliqus tous les contrles dumme type et ayant le mme SkinID.
Exemple dun contrle commun de type TextBox :
Si le thme est appliqu sur tout le site, toutes les TextBox auront lemme style.
Exemple dun contrle spcifique de type TextBox :
Si le thme est appliqu sur tout le site, toutes les TextBox ayant commeSkinID specifique auront le mme style
Pour crer une apparence, une mthode facile consiste ajouter lecontrle une page et le configurer comme il vous convient. Parexemple, vous pouvez ajouter un contrle Calendar une page et dfinirson en-tte des jours, la date slectionne et d'autres proprits.Ensuite, vous pouvez copier la dfinition du contrle de la page en modesource dans un fichier .skin, mais vous devez supprimer l'attribut ID.
OFPPT @Document Millsime PageC-A-001.doc mars 09 58 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
61/105
Dvelopper des composants serveurVoici un exemple de fichier Skin non exhaustif :
-
8/2/2019 23417901 Cours ASP Net Complet
62/105
Dvelopper des composants serveur font-name="Verdana" Font-Size="10pt" borderWidth="1px" BorderColor="#CCCCCC" BackColor="#FFFBFF"/>
Il es tout fait possible de crer plusieurs fichiers Skins dans un mmethme, cependant les contrles ayant un SkinID doivent tre unique dansun thme, sinon vous ne pourrez pas compiler votre application WEB.
4.4. Les fichiers CSS
Pour crer une feuille de style click droit sur le dossierApp_themes/Theme1 ,ajouter un nouvel element choisir feuille de styledonner un nom la feuille de style.
La feuille est vide pour ajouter des elememts et des classes destyle,double click sur la feuille.
Un menu structure Css apparat a gauche :
OFPPT @Document Millsime PageC-A-001.doc mars 09 60 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
63/105
Dvelopper des composants serveur
Click droit sur Elements ,Ajouter une regle de style :
Choisir lelement pour lequel on veut crer un style :
OFPPT @Document Millsime PageC-A-001.doc mars 09 61 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
64/105
Dvelopper des composants serveur
OFPPT @Document Millsime PageC-A-001.doc mars 09 62 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
65/105
Dvelopper des composants serveur
Faire la mme chose pour ajouter une classe.
4.5. Application d'un thme
Un style peut tre directement appliqu au contrle ASP.NET en modifiantdirectement les proprits dun contrle. Bien entendu, lintrt desThmes est de pouvoir stocker diffrents thmes et pouvoir lesappliquer plusieurs fois sans avoir redfinir le thme.
Voici les principaux proprits de style des contrles :
Proprits Type DescriptionBackColor Texte Couleur de larrire planBorderColor Texte Couleur de la bordureBorderStyle Texte Style de la bordureBorderWidth Pixels Largeur de la bordure
Font-Bold Booleen Caractre en grasFont-Italic Booleen Caractre en italiqueFont-Name Texte Police
Font-Overline Booleen Caractre surlignFont-Size Pixels Taille des caractres
Font-Strikeout Booleen Caractre barr
Font-Underline Booleen Caractre souglin
OFPPT @Document Millsime PageC-A-001.doc mars 09 63 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
66/105
Dvelopper des composants serveurForeColor Texte Couleur des caractres
Height Pixels Hauteur du contrleVisible Booleen Visibilit du contrleWidth Pixels Largeur du contrle
Pour appliqer un thme automatiquement, il suffit de spcifier le nom duthme dans len-tte de la page.
Enfin, il faudra spcifier dans chaque contrle le SkinID si vous souhaitezappliquer des styles spcifiques ayant un SkinID.
Sans thme Avec thme
4.6. Appliquer un thme global
Pour appliquer un thme tout le site, pour viter dappliquer le thmepage par page, il faut dfinir le thme appliquer dans le fichier deconfiguration (Web.config) entre les balises system.web , en voici unexemple :
OFPPT @Document Millsime PageC-A-001.doc mars 09 64 - 105
-
8/2/2019 23417901 Cours ASP Net Complet
67/105
Dvelopper des composants serveur
Dans ce cas, vous naurez pas spcifier la proprit Theme surchaque en-tte de chaque page. Par contre si votre thme contient descon