Vous êtes sur la page 1sur 79

ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail

Dvelopper des composants serveur

DIRECTION RECHERCHE ET INGENIERIE DE FORMATION SECTEUR NTIC

ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail

DIRECTION RECHERCHE ET INGENIERIE DE FORMATION SECTEUR NTIC

Dvelopper des composants serveur

Sommaire
1. Introduction ASP.NET 2.0......................................................................4 1.1. Principes.......................................................................................4 1.2. Environnement de dveloppement.....................................................5 1.2.1. Un serveur Web........................................................................5 1.2.2. Framework 2.0..........................................................................5 1.2.3. Un EDI, c'est ncessaire ?...........................................................5 1.2.3.1. Etape 1.................................................................................5 1.2.3.2. Etape 2.................................................................................7 1.2.3.3. Etape 3.................................................................................7 1.3. La gestion dEtat.............................................................................8 1.3.1. Premire page...........................................................................8 1.3.2. Des vnements particuliers......................................................11 1.3.2.1. Application...........................................................................12 1.3.2.2. Session...............................................................................12 1.3.2.3. PostBack..............................................................................13 1.3.3. Les Server Controls..................................................................13 1.3.4. ViewState...............................................................................13 1.3.5. Cookies..................................................................................14 1.3.6. Variable de session..................................................................15 1.3.7. Variable d'application................................................................16 1.3.8. L'objet Cache..........................................................................16 1.3.9. Caching (ou cache HTML)..........................................................17 1.3.10. QueryString..........................................................................17 1.4. Contrles utilisateur ASP.NET..........................................................18 1.4.1. Structure de contrle utilisateur.................................................18 1.4.2. Ajout d'un contrle utilisateur une page....................................20 Pour insrer un contrle utilisateur dans une page Web Forms.................20 1.5. Validation des donnes...................................................................20 1.5.1. RequiredFieldValidator..............................................................21 1.5.2. RangeValidator........................................................................22 1.5.3. CompareValidator....................................................................22 1.5.4. RegularExpressionValidator.......................................................23 1.5.5. CustomValidator......................................................................23 1.5.6. ValidationSummary..................................................................23 2. Laccs aux donnes avec ASP.NET........................................................24 2.1. Introduction.................................................................................24 2.2. Contrles de source de donnes......................................................25 2.3. Contrles lis aux donnes.............................................................26 Contrles de liste ............................................................................26 3. Master Page.......................................................................................27 3.1. Introduction aux MasterPages.........................................................27 3.2. Cration d'une MasterPage..............................................................28 3.3. Mise en place d'une MasterPage.......................................................30 3.4. Conclusion...................................................................................31 4. Thmes et Skins.................................................................................32 4.1. Introduction aux thmes................................................................32 4.2. Cration d'un thme......................................................................32 4.3. Les fichiers Skins..........................................................................33

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 1 - 79

Dvelopper des composants serveur 4.4. Les fichiers CSS............................................................................35 4.5. Application d'un thme...................................................................37 4.6. Appliquer un thme global..............................................................38 4.7. Dsactiver un thme......................................................................38 5. Profiles............................................................................................39 5.1. Introduction aux Profiles.................................................................39 5.2. Implmentation des Profiles............................................................39 5.3. Description des tables et procdures................................................41 5.4. Mise en place des Profiles...............................................................42 5.5. Ajouter / Modifier les proprits.......................................................43 5.6. Les diffrents type de srialisation...................................................45 5.7. Les groupes de proprits...............................................................45 5.8. Conclusion...................................................................................46 6. Scurit en ASP.NET 2.0......................................................................47 6.1. Introduction.................................................................................47 6.2. Le fichier de configuration: Web.config.............................................47 6.3. Utilisation des Memberships et rles.................................................50 6.3.1. Installation de la base...............................................................50 6.3.2. Memberships...........................................................................52 6.3.3. Rles.....................................................................................54 6.4. Les contrles de login....................................................................55 6.4.1. Login.....................................................................................55 6.4.2. LoginView...............................................................................55 6.4.3. PasswordRecovery ..................................................................56 6.4.4. LoginStatus............................................................................56 6.4.5. LoginName.............................................................................57 6.4.6. CreateUserWizard....................................................................57 6.4.7. ChangePassword......................................................................58 6.5. Les diffrents fournisseurs d'authentification......................................58 6.5.1. Forms....................................................................................59 6.5.2. Passport.................................................................................59 6.5.3. Windows................................................................................59 6.5.4. None.....................................................................................59 6.6. Appliquer des autorisations............................................................59 6.6.1. Les balises..............................................................................59 6.6.2. Exemples d'autorisations...........................................................60 6.7. WSAT - Web Site Administration Tool...............................................61 6.7.1. Security.................................................................................61 6.7.2. Application..............................................................................62 6.7.3. Provider.................................................................................63 7. Web Parts.........................................................................................64 7.1. Introduction aux WebParts..............................................................64 7.2. Les diffrentes zones de WebParts...................................................65 7.3. Cration des WebParts...................................................................66 7.4. Formatter des WebParts.................................................................68 7.5. Changement de mode....................................................................69 7.6. CatalogZone.................................................................................72 7.7. EditorZone...................................................................................74 7.8. Conclusion...................................................................................76 8. Conclusion.........................................................................................77

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 2 - 79

Dvelopper des composants serveur

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 3 - 79

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 de fonctionnement d'ASP.NET dans l'environnement DotNet avec le serveur IIS. Un petit schma trs simplifi vous aidera peut tre y voir plus clair :

Voici donc ce qui se passe lorsque vous, utilisateur dsirant naviguer sur une page web, gnrez comme action si l'application que vous dsirez atteindre est dveloppe en ASP.NET 2.0 :

1 = vous tapez une url dans votre navigateur et donc, envoyez une requte pour une page aspx d'un client web vers le serveur IIS 2 = la requte est analyse et le traitement est transfr au runtime, un processus est cr pour excuter l'application --> S'il s'agit de la premire excution du code de cette page, le compilateur JIT (Just In Time) compile le code en binaire natif et le stoque en mmoire. --> Si ce n'est pas la premire excution, le code binaire est charg depuis 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
C-A-001.doc

Millsime
mars 11

Page 4 - 79

Dvelopper des composants serveur

1.2.

Environnement de dveloppement
Un serveur Web

1.2.1.

Puisque nous allons crer du code utilisant une liaison Client / Serveur, il est bien entendu ncessaire d'avoir un serveur disposition dans notre cas, Nous allons utiliser le serveur IIS. IIS est disponible avec windows XP professionnel et windows 2003 server Sous XP Home, il n'est pas ais d'installer IIS, bien que cela soit possible.

1.2.2.

Framework 2.0

Si framework .NET n'a pas t install aprs le serveur IIS, vous aurez des problmes d'excution des pages aspx. Pour remdier cet inconvnient postriori, vous pouvez excuter une commande du type : C:\Windows\Microsoft.Net\Framework\v2.0.xx\aspnet_regiis.exe -i ou xx est la version 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 de dveloppement intgr bien que cela ne soit pas toujours ncessaire mais plutt bien pratique. Il en est de mme avec le dveloppement ASP.NET. Vous pouvez, comme pour des applications Winforms, crire du code dans un diteur de texte. Voici, en quelques tapes, la ralisation 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, voici comment procder :
a. Allez dans le panneau de contrle de Services Internet (IIS) : Outils

d'administration dans le panneau de configuration puis choisissez Internet Informations Services b. Droulez les options jusqu' trouver Site Web par dfaut et faites un clic droit c. Choisissez Nouveau -> Rpertoire virtuel ... d. Crez votre rpertoire Voici en images et sur XP Pro en anglais les tapes dcrites ci-dessus :

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 5 - 79

Dvelopper des composants serveur

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 6 - 79

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 :


<%@ Page Language="VB" %> <html> <body> <h1>Bonjour</h1> <br /> <h2>Nous sommes le <%= DateTime.Now.ToString() %>.</h2> </body> </html>

Sauvegardez-le la racine du site que vous avez cr en le nommant par exemple "bonjour.aspx".

1.2.3.3.

Etape 3

Excutez cette page aspx dans votre navigateur en tapant son adresse dans la barre de navigation : http://localhost/PremierePage/bonjour.aspx et vous devez avoir une page web comme suit :

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 7 - 79

Dvelopper des composants serveur

Vous venez donc de crer votre premire page ASP.NET s'excutant sur un serveur IIS sans avoir ouvert Visual Studio comme support de programmation.

1.3.

La gestion dEtat
Premire page

1.3.1.

Enfin ! Un petit exemple en utilisant Visual Studio ou Visual Web Dvelopper pour se familiariser avec l'environnement ASP.NET. Si vous tes familier avec le "designer" des applications Visual Studio ou Visual Express Edition, ceci vous paratra trs simple mais on se permet tout de mme de dtailler un peu l'interface pour ceux qui abordent ce thme pour la premire fois. Reprenons notre EDI et, aprs avoir bien configur les donnes au niveau du serveur et du nom de l'application, l'interface doit maintenant ressembler ceci :

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 8 - 79

Dvelopper des composants serveur Vous pouvez remarquer que l'interface des applications ASP.NET diffre des applications Winforms mais nous y retrouvons quand mme pas mal de points communs, notamment : l'explorateur de solution contenant notre projet "WebApp", sa localisation "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 allons pouvoir dfinir des comportements graphiques ou autres. la page de code o une partie de codage est gnre automatiquement par l'environnement de dveloppement. deux boutons "design" et "source" nous permettant de passer aisment d'un mode l'autre dans notre page aspx. Remarquez aussi que, si vous dplacez votre curseur dans la partie code, droite du bouton "source", vous apercevez l'endroit exact o se situe le curseur dans l'arborescence des balises HTML. la boite outils, ancre ou non, contenant les contrles utilisables pour votre application web :

Passons maintenant en mode "design". Faites glisser sur la page les contrles suivant et changez leurs proprits en suivant le tableau ciaprs : Contrle
Un "label" : Label1 Un "textbox" droite de Label1 : TextBox1 Un "button" sous Label1 : Button1 Un "label" sous le bouton : Label2

Proprit
Text Text Text

Contenu
"Nom :" "Cliquez" "Bonjour"

BorderWidth 2

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 9 - 79

Dvelopper des composants serveur Remarque : dans la proprit BorderWidth, par dfaut, l'unit de mesure est en "px" (pixel). Cela correspond bien aux normes HTML. Votre page doit ressembler ceci :

Si vous retournez en mode "source", vous constatez que le code HTML s'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 le dveloppement 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'HTML se trouve dans le libre choix que vous avez du type de contrle plac. Par exemple, vous voyez dans notre application que le TextBox1 est considr comme un "asp:textbox" ce qui, niveau excution du code prend plus de place et de temps qu'un simple "asp:inputbox" alors que le rsultat, ici, est exactement le mme. Pour les utilisateurs avertis ayant dj ralis des sites web en HTML, il peut aussi tre plus ais de coder 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 faut associer un vnement au bouton "Cliquez". Pour ce faire, double-cliquez sur le bouton en mode design et l'environnement de dveloppement va crer une mthode associe l'vnement "Click" du bouton :

Remarquez qu'une nouvelle page est apparue "Default.aspx.vb" qui contient le code associ aux mthodes et vnements. Dans votre vnement "Button1_Click", tapez cette ligne :

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 10 - 79

Dvelopper des composants serveur 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, vous pouvez excuter votre page aspx (F5). Lors d'une premire excution vous allez certainement obtenir ce message :

Par dfaut, le dbogage n'est pas activ au niveau des applications web. On vous conseille fortement de l'activer en rpondant OK avec la premire option coche. Ensuite, testez en tapant un nom et en cliquant sur votre bouton. Prenons un peu le temps de voir le code HTML de la page excute :

Vous constatez que des champs cachs ont t gnrs. Le champ nomm _VIEWSTATE contient toutes les informations d'tat des contrles de la page. Il est intressant car est accessible par le programmeur et peut contenir des donnes internes aux pages. Cette notion de conservation de donnes sera dveloppe plus loin dans ce tutoriel.

1.3.2.

Des vnements particuliers

En tant que programmeur, nous sommes pratiquement tous habitus entendre parler d'vnements, nous venons encore de nous en servir Document Millsime Page OFPPT @ C-A-001.doc mars 11 11 - 79

Dvelopper des composants serveur dans notre premire petite application. Nous connaissons ceux lis une action comme "click", rpondant une action sur la souris. ASP.NET possde le mme genre d'vnements mais, certains sont assez particuliers et trs importants pour le droulement et le contrle de ce genre d'application.

1.3.2.1.
Evnement
Application_Start

Application
Description
Excut lors du premier appel une page du site depuis le dmarrage de IIS

Appel lorsque l'application se termine, cela ne signifie Application_End pas que IIS s'arrte mais est d'office appel si, pour une raison quelconque IIS est arrt

1.3.2.2.

Session
Description
appel lors de chaque nouvelle session d'un navigateur client fin de session : lors d'un timeout ou lors d'une destruction explicite (Session.Abandon()) via un lien "Log Out" par exemple

Evnement
Session_Start

Session_End

Il faut aussi savoir qu'une session peut stocker ses donnes en mode "InProc" (dans le process en mmoire) ou en mode "Sql..." (dans une BD SqlServer) via la base de donnes "AspNetState". 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 prnit des donnes vhicules dans le site 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 le serveur IIS. Il y aura un seul objet "Application" commun tous les Document Millsime Page OFPPT @ C-A-001.doc mars 11 12 - 79

Dvelopper des composants serveur utilisateurs 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 ventuel timeout ou jusqu' la fin de l'application

1.3.2.3.

PostBack

Cet vnement gnre un appel au serveur. Dans ASP.NET 2.0, la page se rappelle continuellement en dclenchant cet vnement. C'est au programmeur de crer les conditions de passage d'une page l'autre. IsPostBack est une proprit de la page boolenne (read-only) qui permet justement d'effectuer ce genre de test. Par exemple, on l'utilise dans l'vnement Page_Load pour viter de recharger des donnes persistantes. AutoPostBack est une proprit des contrles qui active le dclenchement d'un aller retour sur le serveur.

Surtout, ne pas s'affoler, ces notions seront reprises maintes fois dans le dveloppement du tutoriel mais sont ncessaires niveau vocabulaire pour voluer dans la manipulation du code proprement dit.

1.3.3.

Les Server Controls

Un petit mot sur les types de contrles prsents dans ASP.NET. Il existe deux jeux de contrles s'excutant ct serveur : Les Web Controls, grs par des vnements, ils ressemblent plus aux objets utiliss dans du dveloppement winforms c'est--dire qu'ils possdent des proprits ("font", "backcolor", ...) facilitant la mise en forme. Ils dpendent de "System.Web.UI.WebControls". Les HTML Controls qui correspondent directement aux balises HTML. Les attributs des balises correspondantes sont accessibles via les proprits de ces contrles. Pour faire une analogie avec les "WebControls", ceux-ci ne possdent qu'une balise "Style" pour la mise en forme, cela est plutt limitatif. Ces derniers dpendent eux de "System.Web.UI.HtmlControls".

1.3.4.

ViewState

Comme dit lors du premier exemple de page aspx, le ViewState, nouveau concept introduit par Microsoft avec ASP.NET, reprsente l'tat de l'ensemble des contrles d'un page. Les informations sont sauves sous forme d'un flux srialis dans la page HTML et le champ cach _VIEWSTATE permet le transit de ces informations entre le client et le serveur. Il peut tre dsactiv au niveau d'un contrle, au niveau d'une page ou au niveau d'une application en plaant la proprit EnabledViewState False.

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 13 - 79

Dvelopper des composants serveur Le plus intressant est que le programmeur peut y ajouter ses propres informations sous forme d'objets indexs par une cl de type String. Pour sauvegarder et lire une information, voici comment utiliser le ViewState, par exemple pour modifier un argument dans une requte de slection :
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If Not IsPostBack Then ViewState("tri") = "nom" ConstruireRequete() End If End Sub Private Sub ConstruireRequete Dim tri As String = CType(ViewState("tri"), String) Dim rq As String = "SELECT * FROM UneTable ORDER BY " & tri End Sub Protected Sub cmdLocalite_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdLocalite.Click ViewState("tri") = "localite" ConstruireRequete() End Sub

1.3.5.

Cookies

Les cookies permettent aux applications Web de stocker des informations spcifiques l'utilisateur. Par exemple, lorsqu'un utilisateur visite votre site, les cookies peuvent vous servir stocker ses prfrences, ou d'autres informations. Lorsque cet u tilisateur revient visiter votre site Web, l'application peut rcuprer les informations stockes prcdemment. Exemple de Cration de cookie Dim cookie As HttpCookie Dim UserID As String User = "neo" cookie = New HttpCookie("User") cookie.Values.Add("User", User) Response.Cookies.Add(cookie) Exemple de Lecture de cookie Dim cookie As HttpCookie cookie = Request.Cookies("User") Dim User As String User= cookie.Value() Dtecter si le navigateur supporte les cookies Dim CoookiesSupported As Boolean = Request.Browser.Cookies

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 14 - 79

Dvelopper des composants serveur Supprimer un cookie Vous ne pouvez pas supprimer directement un cookie sur l'ordinateur d'un utilisateur. Mais vous pouvez donner au navigateur de l'utilisateur l'ordre de supprimer le cookie en rglant la date d'expiration de ce cookie sur une date rvolue. La prochaine fois que l'utilisateur soumettra une demande une page dans le domaine ou le chemin d'accs o se trouve le cookie, le navigateur jugera que le cookie a expir et le supprimera. myCookie.Expires = DateTime.Now.AddDays(1D)

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'une TextBox, un nom de socit. page2.aspx : page dans laquelle nous affichons le nom de la socit (vous comprenez que le but est d'avoir une page d'affichage de donnes de socit se trouvant par exemple dans une base de donnes) Protected Sub cmdAfficheSoc (Byval sender As Object, ByVal e As System.EventArgs) Handles cmdAfficheSoc.Click Session("NomSoc") = txtNomSoc.Text Response.Redirect("page2.aspx") End Sub Code de la page1.aspx : L'utilisateur introduit un nom de socit dans la TextBox nomme "txtNomSoc". Cette information est sauve en Session avant de passer la page2.aspx Protected Sub Page_Load (Byval sender As Object, ByVal e As System.EventArgs) Handles Me.Load If Session("NomSoc") IsNot Nothing Then lblNomSoc.Text = CType(Session("NomSoc"), String) Else Response.Write("Aucune socit n'a t choisie !") End If End Sub Code de la page2.aspx : Un test est effectu pour savoir si la variable de session contient bien une donne. Celle-ci est affiche en passant par un transtypage. Il est vident que cet exemple est trs simpliste et que l'objet Session permet bien d'autres utilisations. Voici quelques points lis l'objet Session (liste non exhaustive) :

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 15 - 79

Dvelopper des composants serveur Initialisation de l'objet Session : vnements Session_Start et Session_End dclenchs par le serveur et accessibles via le fichier Global.asax Expiration de la session Session avec ou sans cookies Session scurise

1.3.7.

Variable d'application

La grande diffrence avec l'objet Session se situe dans le fait qu'un objet Application conserve des donnes pour l'ensemble des utilisateurs d'un mme site web. Il s'utilise de la mme manire que l'objet Session. Protected Sub Page_Load (Byval sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim cpt As Integer = 0 Application.Lock() If Application("Compteur") IsNot Nothing Then cpt = CType(Application("Compteur"), Integer) End If cpt = cpt + 1

Application("Compteur") = cpt Application.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 pas oublier 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-unes trs succinctement car ce genre de programmation demanderait presque un tutoriel elle toute seule !

Dpendances de temps : permet de faire expirer automatiquement une donne une date/heure absolue Dpendances fichiers : le serveur d'application peut mettre jour des donnes lorsque cells-ci sont modifies dans le fichier associ

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 16 - 79

Dvelopper des composants serveur Dpendances SQL : sous SqlServer 2000 et 2005. Agit de la mme manire avec une base de donnes grce au "poling" (interrogation du serveur vers la BD). le callback : association d'une procdure qui est rappele, non pas ds que la donne est supprime mais la prochaine excution de la page qui contient la procdure

1.3.9.

Caching (ou cache HTML)

Un autre aspect de la mise en cache des donnes suivant diverses mthodes. Ici aussi, il serait trop long d'tendre leur mode d'utilisation.

Cache de sortie (output cache) : prend un "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 une partie de la page mme si le cache est activ profils de cache : peuvent tre crs dans le Web.Config et associ par leur nom aux pages qui en ont besoin fragments de cache : fonctionne comme le cache de sortie mais donne la possibilit au programmeur de ne mettre en cache qu'une partie de la page HTML. Le frament caching peut se faire grce aux usercontrols qui 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 page dont les donnes sont prsentes dans une autre page, on aurait trs bien 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 passer l'identifiant la page suivante : <A href="page2.aspx?idsoc=1235"></A> Pour rcuprer l'ID dans la seconde page, il vous suffira de coder comme suit : <p>Vous avez choisi la socit : & Request.QueryString("idsoc")</p> Vous comprenez maintenant le pourquoi de certaines url complexes du genre : http://www.monsite.com/repertoire/liste.asp? id=1257&lng=fr&action=del&email=abc@prov.fr

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 17 - 79

Dvelopper des composants serveur

1.4.

Contrles utilisateur ASP.NET

Il peut arriver que vous ayez besoin dans un contrle de fonctionnalits dont les contrles serveur Web ASP.NET intgrs ne disposent pas. Vous pouvez alors crer vos propres contrles. Pour ce faire, vous disposez de deux options : Vous pouvez crer : o Des contrles utilisateur. Les contrles utilisateur sont des conteneurs dans lesquels vous pouvez placer des balises et des contrles serveur Web. Vous pouvez ensuite traiter le contrle utilisateur comme une unit et lui assigner des proprits et des mthodes. Des contrles personnaliss. Un contrle personnalis est une classe que vous crivez et qui drive de Control ou de WebControl.

Les contrles utilisateur sont beaucoup plus faciles crer que les contrles personnaliss, dans la mesure o vous pouvez rutiliser des contrles existants. Il est donc particulirement facile de crer des contrles comportant des lments d'interface utilisateur complexes. Cette rubrique fournit une vue d'ensemble de l'utilisation des contrles utilisateur 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 par la suite le balisage et les contrles enfants ncessaires. Tout comme une page, un contrle utilisateur peut inclure du code servant manipuler son contenu, et notamment effectuer des tches telles que des liaisons de donnes. Un contrle utilisateur prsente les diffrences suivantes par rapport une page Web 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 html body 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.

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 18 - 79

Dvelopper des composants serveur 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.
<%@ Control Language="VB" ClassName= "UserControl1" %> <script runat="server"> Protectedcolors As String() = {"Red", "Green", "Blue", "Yellow"} Protected currentColorIndex As Integer = 0 Protected Sub Page_Load(ByVal sender As Object, _ ByVal e As System.EventArgs) If IsPostBack Then currentColorIndex = CInt(ViewState("currentColorIndex")) Else currentColorIndex = 0 DisplayColor() End If End Sub Protected Sub DisplayColor() textColor.Text = colors(currentColorIndex) ViewState("currentColorIndex") = currentColorIndex.ToString() End Sub Protected Sub buttonUp_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) If currentColorIndex = 0 Then currentColorIndex = colors.Length - 1 Else currentColorIndex -= 1 End If DisplayColor() End Sub Protected Sub buttonDown_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) If currentColorIndex = colors.Length - 1 Then currentColorIndex = 0 Else currentColorIndex += 1 End If DisplayColor() End Sub </script>

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 19 - 79

Dvelopper des composants serveur


<asp:TextBox ID="textColor "runat= "server" ReadOnly="True" /> <asp:Button Font-Bold="True" ID="buttonUp" runat="server" Text="^" OnClick="buttonUp_Click" /> <asp:Button Font-Bold="True" ID="buttonDown" runat="server" Text="v" OnClick="buttonDown_Click" />

1.4.2.

Ajout d'un contrle utilisateur une page

Pour utiliser un contrle utilisateur, vous devez l'inclure dans une page Web ASP.NET. Lorsqu'une demande est soumise concernant une page et que cette page contient un contrle utilisateur, celui-ci passe par toutes les tapes du traitement 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 site web. Ici, nous allons pouvoir travailler ct client et ct serveur, c'est indispensable pour prvenir au plus tt l'utilisateur d'une erreur ventuelle. En effet, il est inutile d'envoyer une demande au serveur si l'information transmise est errone : cela gnre une perte de temps et un encombrement inutile du serveur. La validation ct client est donc celle qui intervient la premire et se fait en gnral en JavaScript. ASP.NET fournit des contrles de validation qui gnrent le code javascript associ, vous vitant de connatre fond le langage et de devoir taper le code.

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 20 - 79

Dvelopper des composants serveur Les principaux contrles de validation sont : RequiredFieldValidator RangeValidator 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 champ n'est pas vide. En effet, tous les autres contrles de validation acceptent un champ vide donc, associer ce contrle de validation aux autres contrles permet cette vrification essentielle. Le RequiredFieldValidator a donc pour fonction de vrifier qu'un champ a t modifi. Ses proprits principales renseigner sont :

Nom de proprit
ControlToValidate ErrorMessage InitialValue Text

la

Utilisation
doit contenir le nom du contrle valider message afficher en cas d'erreur dans le contrle ValidationSummary contient une valeur qui invalide le contrle si celuici est gal cette valeur prcise texte affich en cas de non validation

Exemple de RequiredFieldValidator sur une TextBox nomme TxtNom :

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TxtNom" ErrorMessage="Admin n'est pas un nom valide" SetFocusOnError="True" InitialValue="Admin"> </asp:RequiredFieldValidator> <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="TxtNom" ErrorMessage="Le champ nom est obligatoire" / > Vous remarquez que pour valider le nom qui est obligatoire, il nous faut 2 contrles RequiredFieldValidator. Un pour signaler que le nom ne peut pas tre un champ vide, l'autre pour interdire l'utilisation du nom "Admin".

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 21 - 79

Dvelopper des composants serveur

1.5.2.

RangeValidator

Comme son nom l'indique, il sera utilis pour valider l'encodage entre des bornes donnes. Par exemple, encoder un nombre entre 1 et 10. Les proprits sont pratiquemment identiques celles du contrle prcdent : Nom de la proprit Utilisation
ControlToValidate ErrorMessage MinimumValue MaximumValue Text doit contenir le nom du contrle valider message afficher en cas d'erreur dans le contrle ValidationSummary valeur minimale de la plage de donnes valeur maximale de la plage de donnes texte affich en cas de non validation

Exemple de validation entre 1 et 10 :


<asp:Label ID="Label1" runat="server" Text="Entrez une valeur comprise entre 1 et 10 :"</asp:Label> <asp:TextBox ID="TxtValeur" runat="server"></asp:TextBox> <asp:RangeValidator ID="RangeValidator1" runat="server" ErrorMessage="RangeValidator" MaximumValue="10" MinimumValue="1" Type="Integer" ControlToValidate="TxtValue">Valeur entre 1 et 10 requise !</asp:RangeValidator>

1.5.3.

CompareValidator

Il utilise un oprateur pour comparer les valeurs en prsence et valider leur concordance. La situation la plus courante d'utilisation est, bien entendu, lors d'une deuxime saisie d'un mot de passe. Les proprits restent aussi dans les mmes normes. Par contre, vous pouvez avoir plusieurs types de validation : Comparaison un type. <asp:CompareValidator runat="server" ID="CompareValidator1" ControlToValidate="TxtValeur" Type="Integer" Operator="DataTypeCheck" ErrorMessage="Doit tre un chiffre entier de type integer !"</asp:CompareValidator> Comparaison une valeur. <asp:CompareValidator runat="server" ID="CompareValidator1" ControlToValidate="TxtValeur" Type="Integer" Operator="GreaterThan" ValueToCompare="0" ErrorMessage="Un chiffre positif est requis !"</asp:CompareValidator> Comparaison un autre champ. <asp:CompareValidator runat="server" ID="CompareValidator1" ControlToValidate="TxtMotPasse2" Type="String" Operator="Equal" ControlToCompare="TxtMotPasse1" ErrorMessage="Les mots de passe ne correspondent pas !"</asp:CompareValidator>

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 22 - 79

Dvelopper des composants serveur

1.5.4.

RegularExpressionValidator

Ce contrle valide un champ suivant une expression rgulire. Il convient pour des tests de validation trs complexes mais demande beaucoup de ressources donc, ne l'utilisez pas pour des validations qui peuvent se faire aisment avec plusieurs autres contrles de validation. Il utilise les mmes proprits que les contrles prcdents avec en plus une proprit ValidationExpression qui correspond videmment l'expression rgulire de test. Un petit exemple de validation d'un numro de compte bancaire pour en voir l'application : <asp:Label ID="Label1" runat="server" Text="Entrer votre numro de compte :"</asp:Label> <td><asp:TextBox ID="TxtCptBancaire" runat="server"></asp:TextBox> <td><asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ErrorMessage="RegularExpressionValidator" ControlToValidate="TxtCptBancaire" ValidationExpression="^\d{3}-\d{7}-\d{2}$">Format incorrect </asp:RegularExpressionValidator>

1.5.5.

CustomValidator

L'utilisateur dfinit lui-mme une fonction pour effectuer la validation lorsque les contrles standards ne peuvent pas assumer ce rle. Dans ce cas, les proprits sont un peu diffrentes : Dans le cas d'une validation ct client : 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 CustomValidator ct 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 balises ad hoc, soit dans un fichier ".js" spar. Ce genre de code est bien connu des dveloppeurs javascript : <script language="javascript"> function Validation (obj, args) { } </script> Dans le cas d'une validation ct serveur : Placez le code de validation dans l'vnement OnServerValidate

1.5.6.

ValidationSummary
Document
C-A-001.doc

OFPPT @

Millsime
mars 11

Page 23 - 79

Dvelopper des composants serveur Ce contrle n'est pas un contrle de validation proprement parler, il sert afficher sous diffrentes formes le rsultat de tous les contrles de validation sur la page aspx si une erreur est survenue. Il est bien vident que vous pouvez l'omettre et grer vous-mme un affichage d'erreur. Le contrle ValidationSummary s'affiche ds que la proprit IsValid de la page est False. Il interroge les diffrents contrles non valides et rcupre la valeur de leur proprit ErrorMessage. Pour afficher le rsultat, vous avez les DisplayMode suivants votre disposition :

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 proprit ShowSummary = 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.

2.Laccs aux donnes avec ASP.NET


2.1. Introduction
Les applications Web accdent souvent des sources de donnes aux fins de stockage et de rcupration de donnes dynamiques. Vous pouvez crire du code pour accder aux donnes l'aide de classes de l'espace de Synoms 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 de donnes les plus courants, et notamment :

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 24 - 79

Dvelopper des composants serveur 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 Web ASP.NET. Les contrles de source de donnes offrent des fonctionnalits puissantes 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 donnes

de

source

de

Description Permet d'utiliser un objet mtier ou une autre classe et de crer des applications Web qui s'appuient sur des objets de couche intermdiaire pour grer des donnes. Permet d'utiliser les fournisseurs de donnes manags ADO.NET, lesquels offrent un accs aux bases de donnes Microsoft SQL Server, OLE DB, ODBC ou Oracle.

ObjectDataSource

SqlDataSource

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 25 - 79

Dvelopper des composants serveur AccessDataSource XmlDataSource Permet d'utiliser une base de donnes Microsoft Access. Permet d'utiliser un fichier XML, ce qui est trs utile pour les contrles serveur ASP.NET hirarchiques tels que les contrles TreeView ou Menu. Utilis avec la navigation de site ASP.NET.

SiteMapDataSource

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 parti des 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.

Contrles de liste
Gnre le rendu des donnes dans divers formats de liste. Les contrles de type liste incluent les contrles BulletedList, CheckBoxList, DropDownList, ListBox et
RadioButtonList. Contrle AdRotator Fonctionnement 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 Document Millsime Page C-A-001.doc mars 11 26 - 79

OFPPT @

Dvelopper des composants serveur des enregistrements. Vous pouvez galement parcourir FormView plusieurs enregistrements. 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 la Menu Repeater pagination des donnes sans ncessiter de code. Gnre le rendu des donnes dans un menu dynamique hirarchique qui peut inclure des sous-menus. Gnre le rendu des donnes dans une liste. Le rendu de chaque lment est gnr l'aide d'un modle d'lment TreeView que vous dfinissez. 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 de dupliquer les sources HTML du design sur chaque page. Dautre solution intermdiaire existait, par exemple lutilisation des frames en HTML, cependant cette fonction appartient au langage HTML et prsente beaucoup de problme, notamment au niveau des emplacements, de plus les frames sont de moins en moins utilises de nos jours. La fonctionnalit MasterPage a longtemps t demande par les dveloppeurs, elle nexistait toujours pas dans les versions prcdentes de lASP.NET, grce au MasterPage vous allez enfin pouvoir sparer les sources du design au code pur. En effet, intgr la version 2.0, vous pouvez sparer la partie dveloppement du design et dveloppement fonctionnel du site, vous navez plus besoin de dployer les sources du design sur chaque page du site. La MasterPage (extension *.master) contiendra la source (X)HTML du design et des zones ddition (contentPlaceHolder), permettant ainsi de crer plusieurs page (contentPage) du mme design. Il suffit ensuite de modifier les zones dditions sur chaque page. Par exemple, si lon considre que le site de SUPINFO (www.supinfo.com) est en ASP.NET 2.0, une MasterPage est suffisante pour le design, ensuite chaque page fera appel cette MasterPage dans len-tte, et chaque page devra insrer leurs informations spcifiques dans les zones dditions imposer dans la MasterPage

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 27 - 79

Dvelopper des composants serveur

3.2. Cration d'une MasterPage


Pour crer une MasterPage, faites un clique-droit sur le nom votre WebSite, puis sur Add a New Item .

Fig 1.1 Crer un nouvel item

Une fentre apparatra, il vous suffira de choisir MasterPage et de renommer, 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 .
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>

Il suffit ensuite dinsrer des zones dditions (contentPlaceHolder) aux endroits souhaiter grce aux balise asp:contentPlaceHolder.

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 28 - 79

Dvelopper des composants serveur Voici un exemple simple de design avec 3 contentPlaceHolder :
<html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Test</title> <style type="text/css"> body { font-size:14px; font-family:verdana; font-weight:bold; text-align:center; } </style> </head> <body> <form id="form1" runat="server"> <table cellpadding="0" cellspacing="0" border="1" style="width:600px; height:400px"> <tr> <td colspan="2" style="height: 50px"> <asp:ContentPlaceHolder ID="top" runat="server"></asp:ContentPlaceHolder> </td> </tr> <tr> <td style="width: 99px; height: 350px"> <asp:ContentPlaceHolder ID="bottom_left" runat="server"></asp:ContentPlaceHolder> </td> <td style="width: 500px; height: 350px"> <asp:ContentPlaceHolder ID="bottom_right" runat="server"></asp:ContentPlaceHolder> </td> </tr> </table> </form> </body> </html>

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 29 - 79

Dvelopper des composants serveur

Fig 1.3 Exemple d'une MasterPage

Attention ne rien rajouter dans les balises contentPlaceHolder si vous souhaitez diter completement la zone. Par exemple si lon rajoute une image dans la zone top de la MasterPage (exemple ci-dessus), cette image apparatra sur toutes les pages faisant appel cette MasterPage.

3.3. Mise en place d'une MasterPage


Pour appliquer une MasterPage sur une nouvelle page, il faut tout dabord enlever toute la source HTML qui vous ne sera pas utile, laisser uniquement len-tte :
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

Rajouter ensuite le paramtre MasterPageFile avec lURL de la MasterPage appliquer. Document


C-A-001.doc

OFPPT @

Millsime
mars 11

Page 30 - 79

Dvelopper des composants serveur


<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" Inherits="_Default" %> AutoEventWireup="true" CodeFile="Default.aspx.cs"

Enfin, il suffit de rajouter des balises contentPlaceHolder avec lID dun contentPlaceHolder de la MasterPage, en voici un exemple :
<asp:Content ContentPlaceHolderID="top" runat="server"> TOP: HELLO, HOW ARE YOU? </asp:Content> <asp:Content ContentPlaceHolderID="bottom_left" runat="server"> BOTTOM LEFT: SUPINFO </asp:Content> <asp:Content ContentPlaceHolderID="bottom_right" runat="server"> BOTTOM RIGHT: 2005-2006 </asp:Content>

Voici le rsultat de notre exemple :

Fig 1.4 Exemple d'une page avec MasterPage Les IDs des contentPlaceHolder sont uniques et laffichage des IDs disponiblent lors de lauto-compltion correspondent aux IDs des contentPlaceHolder de la MasterPage appelle.

3.4. Conclusion
Ainsi cette nouvelle fonctionnalit facilite la tche du dveloppeur en sparant le design du code, mais allge aussi larchitecture de lapplication WEB. Grce au MasterPage en ASP.NET 2.0, vous naurez plus besoin de

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 31 - 79

Dvelopper des composants serveur dupliquer le code source du design sur chaque page. Il est bien entendu possible de crer des MasterPage dynamiquement dans le code-behind, de crer dimbriquer des MasterPage.

4.Thmes et Skins
4.1. Introduction aux thmes
Nous avons vu prcdemment lutilisation des MasterPages facilitant la mise en place et la duplication du design sur toutes les pages dune application WEB, il manque cependant le formatage du site, plus exactement les couleurs, les polices, la taille des tableaux, la taille des diffrents composants etc.De plus les pages ne suivent pas forcment les mme rgles de formatages. Cest l quintervient les thmes, plus exactement la mise en place dun style sur un site. La mise en place du style sur un site se faisait souvent par lintermdiaire des sources HTML, par lutilisation des CSS (Cascading Style Sheet). La diffrence entre les CSS et les thmes est que les CSS ne permettent pas le formatage des contrles ASP.NET. Cest pourquoi les fonctionnalits des CSS et thmes sont tout fait complmentaire dans l'implmentation un site en ASP.NET 2.0.

4.2. Cration d'un thme


Les thmes dune application WEB en ASP.NET 2.0 sont stocks obligatoirement dans le dossier App_Themes, qui est un dossier spcifique ASP.NET. De plus, un thme reprsente un dossier compos au minimum dun fichier Skin (*.skin). Pour crer le dossier App_Themes, faites un clique-droit sur le nom de votre application WEB (et non la solution) puis Add an ASP.NET Folder puis Theme .

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 32 - 79

Dvelopper des composants serveur

Vous avez ensuite la possiblit dajouter des nouveaux thmes en allant dans App_Themes > Add ASP.NET Folder > Theme Ensuite, pour ajouter un nouveau fichier Skin ou CSS votre thme, il suffit tout simplement de faire un clique-droit sur le thme et Add New Item .

4.3. Les fichiers Skins


Les fichiers Skins sont composs essentiellement de cntrole ASP.NET avec leurs proprits de formattage (police, couleur, taille). Vous avez la possibilit dajouter des contrles communs (sans SkinID) ou des contrles spcifiques (avec SkinID). Si le thme est appliqu, les contrles communs sappliqueront tous les contrles du mme type alors que les contrles spcifiques seront appliqus tous les contrles du mme type et ayant le mme SkinID. Exemple dun contrle commun de type TextBox :
<asp:TextBox runat="server" Font-Size="10px" Font-Names="Verdana" ForeColor="red" />

Si le thme est appliqu sur tout le site, toutes les TextBox auront le mme style Exemple dun contrle spcifique de type TextBox :
<asp:TextBox runat="server" SkinID="specifique" Font-Size="10px" Font-Names="Verdana" ForeColor="red" />

Si le thme est appliqu sur tout le site, toutes les TextBox ayant comme SkinID specifique auront le mme style

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 33 - 79

Dvelopper des composants serveur

Voici un exemple de fichier Skin non exhaustif :


<asp:TextBox runat="server" ForeColor="#000000" font-name="Verdana" Font-Size="9px" height="13px" borderWidth="1px" borderStyle="Solid" BorderColor="#82ACFF" BackColor="#FFFFFF" font-bold="false" /> <asp:DropDownList runat="server" Font-Name="Verdana" Font-Size="10px" ForeColor="#000000" Font-Bold="false" borderWidth="1px" borderStyle="Solid" BorderColor="#82ACFF" BackColor="#FFFFFF" /> <asp:ListBox Runat="Server" Font-Size="10pt" BackColor="#FFFBFF" ForeColor="gray"/> Font-Name="Verdana"

<asp:GridView Runat="Server" SkinId="test" CellPadding="1" BorderStyle="solid" BorderWidth="1px" BackColor="whitesmoke" ForeColor="#93B41A" HeaderStyle-Font-Names="Verdana" HeaderStyle-Font-Size="10px" HeaderStyle-ForeColor="gray" HeaderStyle-BackColor="white" HeaderStyle-Font-Bold="true" RowStyle-Font-Names="Verdana" RowStyle-Font-Size="10pt" RowStyle-ForeColor="#93B41A" RowStyle-BackColor="whitesmoke" AlternatingRowStyle-BackColor="white" AlternatingRowStyle-ForeColor="#93B41A" /> <asp:Label runat="server" SkinID="LabelWhite" ForeColor="white" font-name="Verdana" Font-size="10pt" /> <asp:Label runat="server" SkinID="LabelUnderline" ForeColor="Gray"

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 34 - 79

Dvelopper des composants serveur


font-name="Verdana" Font-size="10pt" Font-Underline="true" /> <asp:FileUpload runat="server" ForeColor="Gray" font-name="Verdana" Font-Size="10pt" borderWidth="1px" BorderColor="#CCCCCC" BackColor="#FFFBFF" /> <asp:Button runat="server" BackColor="#FFFBFF" BorderColor="#CCCCCC" BorderStyle="solid" BorderWidth="1px" Font-name="Verdana" Font-size="8pt" ForeColor="Darkgray" /> <asp:RadioButtonList runat="server" Font-Name="Verdana" Font-Size="11px" ForeColor="gray" /> <asp:CheckBox runat="server" BackColor="#FFFBFF" Font-Name="Verdana" Font-Size="11px" ForeColor="gray" /> <asp:RequiredFieldValidator runat="server" Font-Name="Verdana" Font-Size="11px" ForeColor="red" /> <asp:CompareValidator runat="server" Font-Name="Verdana" Font-Size="11px" ForeColor="red" />

Il es tout fait possible de crer plusieurs fichiers Skins dans un mme thme, cependant les contrles ayant un SkinID doivent tre unique dans un thme, sinon vous ne pourrez pas compiler votre application WEB.

4.4. Les fichiers CSS


Visual Studio 2005 intgre un outil de gnration de style CSS par linterface Style Builder permettant de dfinir vos style par le biais dune interface simple. Pour afficher linterface, il suffit de faire un cliquedroit dans votre fichier css (dans une zone de style) puis Build Style .

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 35 - 79

Dvelopper des composants serveur

Une interface pour ajouter des style CSS est disponible par un clique-droit dans votre feuille de style CSS puis Add Style Rule .

Lutilisation des CSS dans le cas dune application WEB permet uniquement dappliquer un style aux contrles HTML, mais pas aux contrles ASP.NET

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 36 - 79

Dvelopper des composants serveur

4.5. Application d'un thme


Un style peut tre directement appliqu au contrle ASP.NET en modifiant directement les proprits dun contrle. Bien entendu, lintrt des Thmes est de pouvoir stocker diffrents thmes et pouvoir les appliquer plusieurs fois sans avoir redfinir le thme. Voici les principaux proprits de style des contrles : Proprits BackColor BorderColor BorderStyle BorderWidth Font-Bold Font-Italic Font-Name Font-Overline Font-Size Font-Strikeout Font-Underline ForeColor Height Visible Width Type Texte Texte Texte Pixels Booleen Booleen Texte Booleen Pixels Booleen Booleen Texte Pixels Booleen Pixels Description Couleur de larrire plan Couleur de la bordure Style de la bordure Largeur de la bordure Caractre en gras Caractre en italique Police Caractre surlign Taille des caractres Caractre barr Caractre souglin Couleur des caractres Hauteur du contrle Visibilit du contrle Largeur du contrle

Pour appliqer un thme automatiquement, il suffit de spcifier le nom du thme dans len-tte de la page.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> Theme="supinfo"

Enfin, il faudra spcifier dans chaque contrle le SkinID si vous souhaitez appliquer des styles spcifiques ayant un SkinID. Sans thme Avec thme

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 37 - 79

Dvelopper des composants serveur

4.6. Appliquer un thme global


Pour appliquer un thme tout le site, pour viter dappliquer le thme page par page, il faut dfinir le thme appliquer dans le fichier de configuration (Web.config) entre les balises system.web , en voici un exemple :
<?xml version="1.0"?> <configuration> <appSettings/> <connectionStrings/> <system.web> <compilation debug="true"/> <authentication mode="Windows"/> <pages theme="test"/> </system.web> </configuration>

Dans ce cas, vous naurez pas spcifier la proprit Theme sur chaque en-tte de chaque page. Par contre si votre thme contient des contrles avec SkinID, il faudra les spcifier dans toutes vos pages.

4.7. Dsactiver un thme


Les thmes appliqus sont prioritaires, ce qui nest pas pratique si lon souhaite appliquer un style spcifier un et un seul contrle. Dans ce cas vous avez la possibilit dutilis la proprit EnableTheming (booleen) disponible pour un contrle ou une page.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" EnableTheming="false" Inherits="test " %>

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 38 - 79

Dvelopper des composants serveur Les thmes sont dsactivs sur la page test.aspx.
<asp:TextBox ID="TextBox1" ForeColor="red" runat="server"></asp:TextBox> EnableTheming="false"

La TextBox naura pas de thme appliqu, seul les proprits de style dfinit dans le contrle sera valable.

5. Profiles
5.1. Introduction aux Profiles
Plusieurs faons de stocker les informations des utilisateurs sont envisageable telles que les sessions, les cookies utiliss principalement jusque l pour garder une trace dun visiteur ou pouvoir stocker des informations tel quun panier, un nom. Cependant ces solutions requierent un minimum de code de la part du dveloppeur. ASP.NET intgre une nouvelle solution, les Profiles, se basant sur une base de donne (SQL Server, Access, Oracle) et permet de stocker des informations permanant et automatiquement. Cette nouvelle fonctinnalit de ncessite aucun code pour le stockage, ASP.NET se charge de cette fonction et modifie chaque fois la base de donne. De plus, les Profiles permettent de stocker des informations long terme, souvent associes lAuthentification des utilisateurs dans les applications WEB. Lutilisation des Profiles sera dtaille uniquement avec une base de donne SQL Server ainsi que linstallation des Profiles par lintermdiaire de lapplication aspnet_regsql.exe de Microsoft, intgr dans le Framework 2.0.

5.2. Implmentation des Profiles


Microsoft met disposition un executable permettant dinstaller les Profiles (de mme pour lutilisation des Membership et Roles) dans une base de donne. Cette executable se trouve dans le chemin suivant : C:\WINDOWS\Microsoft.NET\Framework\v2.0.xxxx\aspnet_regsql.exe Il vous suffit de lancer le programme, choisir si vous voulez crer une nouvelle base (ASPNETDB sera le nom de la base par dfaut) ou installer tous les composants dans une base existante.

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 39 - 79

Dvelopper des composants serveur

Fig 4.1 Installation aspnet_regsql.exe

Voici les nouvelles tables installs :

Fig 4.2 Tables installes

Et les procdures stockes concernant les Profiles :

Fig 4.3 Procdures pour les Profiles

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 40 - 79

Dvelopper des composants serveur

5.3. Description des tables et procdures


Lutilisation des Profiles ncessite une base de donne stockant les informations grce des procdures stockes. Quelque soit la procdure dinstallation des Profiles, vous tomberez sur le mme schma de base de donne. Table
aspnet_Applications

Description
Informations concernant toutes les application WEB disponibles Informations concernant tous les utilisateurs (status de connexion, dernire connexion). Reli un ou plusieurs Profile et une application. Informations concernent les Profiles de plusieurs utilisateurs avec la dernire date de modification

aspnet_Users

aspnet_Profile

Fig 4.4 Structure des tables Profiles

Procdures
aspnet_Profile_DeleteInactiveProfiles aspnet_Profile_DeleteProfiles aspnet_Profile_GetNumberOfInactiveProfile s aspnet_Profile_GetProfiles

Description
Supprime les profiles inactifs selon une dure spcifier Supprime les Profiles selon les utilisateurs Rcupre le nombre de Profiles inactifs depuis un certain temps ( spcifier) Permet de rcuperer des informations sur les Profiles, tel que le propritaire utilisateur, la dernire date de

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 41 - 79

Dvelopper des composants serveur


aspnet_Profile_GetProperties aspnet_Profile_SetProperties modification Permet de rcuperer le contenu dun Profile selon le nom de lutilisateur Permet de modifier un Profile selon lutilisateur

5.4. Mise en place des Profiles


Les Profiles se dfinissent de le fichier de configuration de lapplication WEB, le fichier XML web.config, entre les balises system.web.
<?xml version="1.0"?> <configuration> <appSettings/> <connectionStrings/> <system.web> <compilation debug="true"/> <authentication mode="Windows"/> <profile defaultProvider=""> <providers> ... </providers> <properties> <add ... /> </properties> </profile> </system.web> </configuration>

Lutilisation des Profiles est associe un Provider (Profile Provider), donc une base de donne. En loccurrence, vous avez la possibilit de choisir un Provider par defaut, c'est--dire le Provider dfinit dans le champs ConnectionString du fichier web.config, ou de dfinir vous-mme le provider entre les balises Provider. La balise Properties permet de dfinir les informations qui seront stockes dans la base de donne, voici les proprits de la balise Add:
Proprits Name allowAnonymous Type Provider serializeAs readOnly DefaultValue Group Description Nom de la proprit, auquel on pourra accder dans le code-behind Booleen, autoris lutilisation de cette proprit pour les utilisateurs avec un Profile anonyme Le type de la proprit (String, Integer, ) Le Provider associ Le type de serialisation (String, Binary, ) Proprit en mode lecture uniquement La valeur par dfaut de la proprit Ordonner les proprits par groupe

Voici un exemple de Profile :

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 42 - 79

Dvelopper des composants serveur


<profile enabled="true"> <providers> <add name="AspNetSqlProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="xxx"></add> </providers> <properties> <add name="panier" allowAnonymous="true" type="Cart" provider="AspNetSqlProvider" serializeAs="Binary"/> <add name="destinataire" allowAnonymous="true" type="Destinataire" provider="AspNetSqlProvider" serializeAs="Binary"/> </properties> </profile>

Dans cet exemple, les type Cart et Destinataire sont des classes.

5.5. Ajouter / Modifier les proprits


Une fois les proprits des Profiles misent en place dans le fichier web.config, vous allez pouvoir stocker des donnes dans un Profile. Attention, si vous souhaitez stocker des informations dans un Profile anonyme, il faut activer les utilisateurs anonyme dans le fichier web.config. <anonymousIdentification enabled="true"/> Laccs au proprit du profile en code-behind (C#) se fait de cette manire :
Profile.[propriete] = [valeur];

Voici un exemple : Le fichier web.config :


<?xml version="1.0"?> <configuration> <appSettings/> <connectionStrings> <add name="testConnectionString" Source=JUN\SQLExpress;Initial Security=True" providerName="System.Data.SqlClient" /> </connectionStrings> <system.web> <compilation debug="true"/> <authentication mode="Windows"/> <pages theme="test"/>

connectionString="Data Catalog=test;Integrated

<anonymousIdentification enabled="true"/> <profile enabled="true"> <providers> <add name="AspNetSqlProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="testConnectionString"></add> </providers>

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 43 - 79

Dvelopper des composants serveur


<properties> <add name="age" allowAnonymous="true" type="Integer" provider="AspNetSqlProvider" serializeAs="String" /> </properties> </profile> </system.web> </configuration>

Le fichier test.aspx :
<html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> Age&nbsp;<asp:TextBox ID="TxtBox_Age" runat="server"></asp:TextBox> <br /> <asp:Button ID="Button_validate" runat="server" Text="Valider" OnClick="Button_valide_Click" /><br /> <br /> </div> </form> </body> </html>

Le fichier test.aspx.cs :
using using using using using using using using using using System; System.Data; System.Configuration; System.Collections; System.Web; System.Web.Security; System.Web.UI; System.Web.UI.WebControls; System.Web.UI.WebControls.WebParts; System.Web.UI.HtmlControls;

public partial class test : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button_valide_Click(object sender, EventArgs e) { Profile.age = Convert.ToInt32(TxtBox_Age.Text); }

Fig 4.5 Exemple stockage information Document


C-A-001.doc

OFPPT @

Millsime
mars 11

Page 44 - 79

Dvelopper des composants serveur Le contenu de la table aspnet_Profile avant validation :

Fig 4.6 Tables aspnet_Profile avant validation

Le contenu de la table aspnet_Profile aprs validation :

Fig 4.7 Tables aspnet_Profile aprs validation

Pour rcuprer cette donne, il suffit de la rcuprer dans un Label ou autre contrle avec ce bout de code :
= Profile.age;

5.6. Les diffrents type de srialisation


Les informations sont srialises puis stocks dans un Profile. Quatres type de srialisations sont disponibles :
Type String Binary Xml ProviderSpecific Description Converti en String Converti en Binaire Converti en Xml Converti selon le type du Provider Symbole S B X P

La proprit PropertyNames a une structure permettant de reconnatre les diffrentes proprits du Profile enregistr. Sa structure est compose du nom de la proprit enregistre, du type de serialisation, le dbut de la chane concern, la taille de la chane : Nom_proprit:type_serialisation:debut_chane:taille_chane Sil existe plusieurs proprits, elles sont toutes concatnes.

5.7. Les groupes de proprits


Les groupes de proprits permettent de regrouper les proprits stocker dans la base de donne selon leur fonction ou type, permettant dordonner le Profile si celui-ci est compos dune multitude de proprits. Cela permet aussi davoir le mme nom de proprit dans chaque groupe puisque par dfaut, une proprit est unique ou par groupe. Voici un exemple de Profile group :

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 45 - 79

Dvelopper des composants serveur


<profile enabled="true"> <providers> <add name="AspNetSqlProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="testConnectionString"></add> </providers> <properties> <group name="Students"> <add name="Campus_ID" /> <add name="Nom" /> <add name="Prnom" /> <add name="Rgion" /> <add name="Promo" /> <add name="Pole" /> </group> </properties> </profile>

Pour accder aux proprits, il suffit de spcifier le groupe, par exemple :


= Profile.Students.Nom;

5.8. Conclusion
Cette nouvelle fonctionnalit permet ainsi de stocker automatiquement et permanant des informations dans une base de donne. Bien entendu, les dveloppeurs prfreront dvelopper eux-mmes le stockage dinformation temporaire ou long terme, cependant la solution des Profiles de Microsoft permet une implmentation simple et rapide. Si vous souhaitez migrer un Profile Anonyme vers un Profile Connect (par exemple pour un panier) il faut crer un fichier Global.asax comme cet exemple :
<%@ Application Language="C#" %> <script runat="server"> void Profile_MigrateAnonymous(Object ProfileMigrateEventArgs pe) { // vous ajoutez toutes les proprits migrer sender,

Profile.panier = Profile.GetProfile(pe.AnonymousID).panier; Profile.destinataire = Profile.GetProfile(pe.AnonymousID).destinataire; // on supprimer le profile anonyme AnonymousIdentificationModule.ClearAnonymousIdentifier(); } </script>

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 46 - 79

Dvelopper des composants serveur

6.Scurit en ASP.NET 2.0


6.1. Introduction
Chaque site Internet ncessite une certaine scurit pour viter tout problmes. La nouvelle version d'ASP.NET 2.0 de Microsoft, se basant sur le Framework 2.0, permet une meilleure scurit et simplifie la tche du dveloppeur. En effet, l'ASP.NET 2.0 est un nouveau langage de Web dveloppement pouvant tre qualifier de "Nouvelle gnration". Elle fait partie des nouvelles innovations du WEB 2.0 (AJAX, ASP.NET 2.0...), la nouvelle gnration des websites. Grce ce langage, nous allons pouvoir appliquer des autorisations d'accs certaines pages/dossiers, implmenter une gestion d'utilisation scurise et crypte par l'utilisation des Membership et roles. L'ASP.NET 2.0 a t dvelopp de tel sort qu'il falicite le dveloppeur, en rduisant son temps de travail de 80%. En effet, l'ASP.NET 2.0 consiste vraissemblablement au VB en "Drag and Drop", d'o la hausse de productivit pour les socits qui utiliseront ce langage. Ce langage intgre, par ailleurs, de nouveaux composants tel que les thmes et skins, les masterpages, les WebParts, la personalisation, les profils, et bien d'autres nouveauts.

6.2.

Le fichier de configuration: Web.config

Le fichier Web.config est un fichier XML permettant de grer la configuration de votre Website ou application. Il se trouve en gnral la racine du site et chaque sous dossiers peuvent contenir un fichier de configuration. Par exemple si vous tes sur IIS, vous avez la possibilit de placer un fichier web.config la racine (C:\InetPub\wwwroot), ainsi que chaque sous dossiers de wwwroot. Ce fichier permet de grer plusieurs paramtres d'un site web, notamment les accs, les autorisations, les sessions, les mails, les erreurs ainsi que leur redirections etc... Voici l'exemple d'un fichier web.config:
<?xml version="1.0"?> <configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> <appSettings/> <connectionStrings> <add name="xxxxxxx" connectionString="Data Source= xxxxxxx;Initial Catalog= xxxxxxx;Integrated Security=True" providerName="System.Data.SqlClient"/> </connectionStrings> <system.web> <machineKey validationKey='EB5219CAB5504274A423EB78718F3E56DC8848 AFA6025B6D740D46AA2394EBAD1BB9FE6BD9141A691A971 7CFEDC77FB2788BBBC2CD80CA6C3EE02ACF99B04BA5'

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 47 - 79

Dvelopper des composants serveur


decryptionKey='685F5FA7DD04AEE2A3C203A55612D6 A1A366F37491BED4B5' validation='SHA1'/> <membership defaultProvider="MembershipSqlProvider"> <providers> <add name="MembershipSqlProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName=" xxxxxxx " enablePasswordRetrieval="true" passwordFormat="Encrypted" applicationName=" xxxxxxx "> </add> </providers> </membership> <roleManager enabled="true" defaultProvider="RoleManagerSqlProvider"> <providers> <add connectionStringName=" xxxxxxx applicationName=" xxxxxxx " name="RoleManagerSqlProvider" type="System.Web.Security.SqlRoleProvider" / > </providers> </roleManager> <profile enabled="true"> <providers> <add name="AspNetSqlProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName=" xxxxxxx "> </add> </providers> <properties> <add name="Cart" allowAnonymous="true" type="W2TM.Web.framework.Cart" provider="AspNetSqlProvider" serializeAs="Binary"/> </properties> </profile> <anonymousIdentification enabled="true" cookieName="ASPXANONYMOUS" cookieTimeout="20" cookiePath="/" cookieRequireSSL="false" cookieSlidingExpiration="true" cookieProtection="All" cookieless="UseCookies"> </anonymousIdentification> <sessionState mode="InProc"></sessionState> cookieless="UseCookies"

<compilation debug="true"/> <customErrors defaultRedirect="~/erreur.aspx"/> <authentication mode="Forms"> mode="Off"

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 48 - 79

Dvelopper des composants serveur


<forms defaultUrl="default.aspx" loginUrl="login.aspx" requireSSL="false" protection="All"> </forms> </authentication> <authorization> <deny users="*" /> </authorization> </system.web> <location path="admin"> <system.web> <authorization> <allow roles="admin"/> </authorization> </system.web> </location> <location path="erreur.aspx"> <system.web> <authorization> <allow users="*"/> </authorization> </system.web> </location> <location path="Default.aspx"> <system.web> <authorization> <allow users="*"/> </authorization> </system.web> </location> <location path="uploads"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location> <location path="master"> <system.web> <authorization> <allow users="*"/> </authorization> </system.web> </location> <location path="fr"> <system.web> <authorization> <allow users="*"/> </authorization> </system.web> </location> <location path="en"> <system.web> <authorization> <allow users="*"/> </authorization> </system.web> </location> <location path="login.aspx">

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 49 - 79

Dvelopper des composants serveur


<system.web> <authorization> <allow users="?"/> </authorization> </system.web> </location> <location path="images"> <system.web> <authorization> <allow users="*"/> </authorization> </system.web> </location> <system.net> <mailSettings> <smtp> <network host="localhost" /> </smtp> </mailSettings> </system.net> </configuration>

Ce fichier web.config est tir d'un des sites Exemples. Tout au long de cet article vous apprendrez petit petit comment scuriser votre site par ce fichier de configuration XML.

6.3.

Utilisation des Memberships et rles


Installation de la base

6.3.1.

Avant toutes choses, les memberships et rles s'utilisent obligatoirement avec une base de donne (SQL Server, Acces, Oracle). Nous allons uniquement prendre le cas de SQL Server. Pour SQL Server, il vous faut installer la base ASPNETDB (Framework 2.0) qui contient des tables, des procdures stocks, vous permettant d'utiliser les memberships, les rles, les profiles et donc la personnalisation. L'installation se trouve en gnral dans: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50215\aspnet_regsql.exe Il vous suffit de lancer le programme, choisir si vous voulez crer une nouvelle base (ASPNETDB sera le nom de cette base) ou installer tous les composants dans une base existante.

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 50 - 79

Dvelopper des composants serveur

Voici une petite partie de l'arborescence de votre base de donne aprs installaton:

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 51 - 79

Dvelopper des composants serveur

6.3.2.

Memberships

A la diffrence des versions prcdentes, l'ASP.NET 2.0 inclut une utilisation simple des memberships et rles, grce l'implmentation des providers, nouveaut dans le .NET Framework 2.0, permettant un accs diffrentes bases, de pouvoir contrler et choisir o stocker des informations dans une base. Il existe diffrents providers possibles pour les memberships: Acces, SQL Server... voici un schma montrant le modle du provider et son fonctionnement:

Pour utiliser les memberships dans votre projets, vous devez obligatoirement modifier le fichier Web.config (ou modifier par l'intermdiaire du WSAT), en voici un exemple (entre les balises system.web):
<membership defaultProvider="MembershipSqlProvider"> <providers> <add name="MembershipSqlProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="votre_ConnectionString" enablePasswordRetrieval="true" passwordFormat="Encrypted" applicationName="nom_application"> </add> </providers> </membership>

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 52 - 79

Dvelopper des composants serveur Les memberships peuvent s'utiliser dans le code-behind, en utilisant la classe membership qui est compose de mthodes statiques, ne ncessitant aucune instance de classe. Voici une liste non-exhaustive de mthode: Cration d'un utilisateur (deux manires): Membership.CreateUser(username, password); OU MembershipCreateStatus status; MembershipUser newuser = Membership.CreateUser(stringLogin, stringPassword, stringMail, stringQuestion, stringReponse, true, out status); Supprssion un utilisateur: Membership.DeleteUser(username); Validit d'un utilisateur: Membership.ValidateUser(username, password); Chercher un utilisateur par son mail: Membership.FindUsersByEmail(email); Afficher tous les utilisateurs: Membership.GetAllUsers(); Il vous suffit de tapper "Membership" dans le code-behind (*.aspx.cs), vous pourrez apercevoir par auto-compltion toutes les mthodes de cette classe. Bien entendu toutes ces mthodes peuvent tre gnrer automatiquement en utilisant les contrles de Login, qui consiste simplement du Drag and Drop. Voici un exemple simple d'un formulaire d'inscription en utilisant la class membership:
Login: <asp:TextBox ID="TBox_Login" runat="server"></asp:TextBox><br /> Password:<asp:TextBox ID="TBox_Pwd" runat="server"></asp:TextBox><br /> <br /> <asp:Button ID="Bt_Register" runat="server" OnClick="Bt_Register_Click" Text="S'inscrire" /></div>

protected sub EventArgs e) TBox_Pwd.Text) End sub

Bt_Register_Click(object

sender,

Membership.CreateUser(TBox_Login.Text,

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 53 - 79

Dvelopper des composants serveur

6.3.3.

Rles

Les rles consistent regrouper les utilisateurs par groupes, par exemples les administrateurs dans le rle "admin", les utilisateurs inscrits dans le rle "user". L'utilit des rles est de pouvoir contrler un grand nombre d'utilisateur par l'intermdiaire d'un nom: le nom du rle. Il vous faut cependant, activer les rles, soit dans le WSAT, soit dans le web.confg comme ci-dessous.
<roleManager enabled="true" defaultProvider="RoleManagerSqlProvider"> <providers> <add connectionStringName="votre_ConnectionString" applicationName="royal_fleur" name="RoleManagerSqlProvider" type="System.Web.Security.SqlRoleProvider" /> </providers> </roleManager>

Comme pour les memberships, ils existent des classes pouvant utiliser les rles, la principale classe est "roles". Voic quelques exemples de mthodes pouvant tre utiliser: Cration d'un rle: Roles.CreateRole(nom); Supprssion d'un rle: Roles.DeleteRole(nom); Ajout d'un utilisateur un rle: Roles.AddUserToRole(username, rolename); Supprssion d'un utilisateur d'un rle: Roles.RemoveUserFromRole(username, rolename); Les rles, ainsi que les memberships, peuvent tre configurer avec le WSAT.

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 54 - 79

Dvelopper des composants serveur

6.4.

Les contrles de login

Dans le prcdent chapitre, nous avons vu les diffrentes mthodes possibles pour la classe membership, cependant toutes ces mthodes peuvent tre grer automatiquement par les contrles de login. Tous les templates des contrles ci-dessous sont modifiables, y compris par l'intermdiaire d'un thme ou d'un fichier skin.

6.4.1.

Login

Le Login permet tout simplement un utilisateur de se connecter en indiquant son login et son password, il vous suffit simplement de faire du Drag an Drop, prendre l'objet login et le dposer sur une page.

Vous avez la possibilit de modifier le template, soit en utilisant les templates intgrs au contrle en cliquant sur "Auto Format", soit vous diter vous mme le template en cliquant sur "Convert To Template", cela convertira le contrle en tableau HTML.

6.4.2.

LoginView

Le loginView permet de grer des templates diffrents: - le template pour les utilisateurs anonymes - le template pour les utilisateurs connects

<asp:LoginView ID="LoginView1" runat="server"> <LoggedInTemplate> Bonjour<asp:LoginName ID="LoginName1" runat="server" /> </LoggedInTemplate> <AnonymousTemplate> <asp:Login ID="Login2"

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 55 - 79

Dvelopper des composants serveur


runat="server"></asp:Login> </AnonymousTemplate> </asp:LoginView>

Dans l'exemple ci-dessus, un utilisateur anonyme verrait le contrle Login, alors qu'un utilisateur connect verra "Bonjour [Login]".

6.4.3.

PasswordRecovery

<asp:PasswordRecovery runat="server"> <MailDefinition Subject="sujet"> </MailDefinition> </asp:PasswordRecovery>

ID="PasswordRecovery1" From="votre@mail.fr"

Attention, la configuration mail est obligatoire pour que ce contrle fonctionne, en effet ce contrle envoit un mail l'utilisateur ayant rentrer son pseudo, sa question de scurit ainsi que la rponse de scurit. De plus, il faut configurer le mail dans le fichier de configuration comme cidessous:
<system.net> <mailSettings> <smtp> <network host="localhost" /> </smtp> </mailSettings> </system.net>

Dans le cas ci-dessus, il s'agit d'un serveur SMTP en local.

6.4.4.

LoginStatus

Le LoginStatus est affiche tout simplement un lien "login" si l'utilisateur est anonyme ou un lien "LogOut" si l'utilisateur est connect. (Voir l'exemple ci-dessous).

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 56 - 79

Dvelopper des composants serveur

6.4.5.

LoginName

LoginName, vu dans l'exemple du LoginView, permet de rcuprer le Login de l'utilisateur connect, pratique pour personnaliser un message avec le login pour chaque utilisateur.
<asp:LoginView ID="LoginView1" runat="server"> <AnonymousTemplate> <asp:Login ID="Login1" runat="server" DestinationPageUrl="~/login.aspx"> </asp:Login> <asp:LoginStatus ID="LoginStatus1" LogoutPageUrl="~/default.aspx" runat="server" /> </AnonymousTemplate> <LoggedInTemplate> Bonjour <asp:LoginName ID="LoginName1" runat="server" />! <asp:LoginStatus ID="LoginStatus1" runat="server" /> </LoggedInTemplate> </asp:LoginView>

6.4.6.

CreateUserWizard

Ce contrle permet un utilisateur de s'inscrire en rentrant quelques informations, cela ne ncessite aucune configuration, mis part les memberships dans le web.config.

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 57 - 79

Dvelopper des composants serveur

6.4.7.

ChangePassword

Comme le nom l'indique, cela permet tout simplement de changer son password.

6.5.

Les diffrents fournisseurs d'authentification

Le choix des fournisseurs se situe au niveau de la balise "authentification". En voici un exemple:


<authentication mode="Forms"> <forms name=".ASPXUSERAUTH" defaultUrl="default.aspx" loginUrl="login.aspx" requireSSL="false" protection="All"> </forms> </authentication>

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 58 - 79

Dvelopper des composants serveur

6.5.1.

Forms

L'authentification par formulaire est la plus rpandue et la plus utilises. Elle consiste en l'utilisation des cookies. Lorsqu'un utilisateur est connect, un cookie est cre chez le client. Ce fournisseur implique souvent l'utilisation des contrles de scurit (login).

6.5.2.

Passport

Le fournisseur passport est spcifique Microsoft, et requiert un compte passport (MSN etc...) qui sont centralis chez Microsoft.

6.5.3.

Windows

Ce fournisseur implique la prsence de IIS sur le serveur, qui effectuera lui mme les authentifications de chaque utilisateur.

6.5.4.

None

Ce fournisseur correspond tout simplement une authentification personnalise, c'est-dire que le dveloppeur devra lui mme le dvelopper, ce qui demanderait un surplus de travail.

6.6.

Appliquer des autorisations Les balises

6.6.1.

Les autorisations permettent de restreindre l 'accs aux utilisateurs certaines partie du site ou dossier. Par exemple interdire l'accs aux anonyme dans l'administration, interdire l'accs aux utilisateurs inscrit un dossir d'image etc... Tout cela se configure par l'intermdiaire du fichier web.config, qui comme vous le voyez est trs utile. Voici la balise mettre entre : <authorization> <deny users="?"/> </< FONT><authorization> - * signifie "tout le monde" - ? signifie "utilisateurs anonyme" - Si cette balise est entre cela s'applique au site entier (projet entier), dans notre cas, personne n'a accs au site. - Pour autoriser, il suffit de remplacer deny par allow. - Pour autoriser un rle, et non un utilisateur, il suffit de remplacer users par roles.

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 59 - 79

Dvelopper des composants serveur

6.6.2.

Exemples d'autorisations

Voici une arborescence assez simple:

La meilleur politique d'autorisation est d'interdire, tout d'abord, l'accs au site entier, donc: <authorization> <deny users="*"/> </< FONT><authorization> Ensuite, il faut autoriser un par un les pages/dossiers. Voici les balises insrer (en dehors de system.web!): <location path="default.aspx"> la page default.aspx <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location> <location path="MasterPage.Master"> la Masterpage <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location> <location path="admin"> <system.web> <authorization> <deny users="?"> <allow roles="admin" /> </authorization> </system.web> </location> Le dossier admin

En gnral, il faut mettre en premier les interdictions (deny), puis les autorisations (allow). Document
C-A-001.doc

OFPPT @

Millsime
mars 11

Page 60 - 79

Dvelopper des composants serveur Les autorisations savrent trs utiles et compliqu pour des sites complexes, c'est pourquoi cela demande une arborescence de fichier bien ordonn et rflchi, tablir l'avance les rles, les utilisateurs, les diffrents accs au site. Comme vu ci-dessus, la meilleure politique d'autorisation est de "tout interdire" puis autoriser un par un.

6.7.

WSAT - Web Site Administration Tool

Le WSAT est une interface d'administration simplifi du fichier de configuration, permettant de configurer votre application/ site. Le WSAT est compos de 3 sections: - Security - Application - Provider Vous avez aussi la possiblit de modifier les profiles par l'intermdiaire du WSAT.

6.7.1.

Security

La partie scurit concerne tout ce que l'on a vu jusque l. Grce cette administration, vous pourrez ajouter/modifier/supprimer des utilisateurs, ajouter/modifier/supprimer des rles, ainsi que les autorisations.

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 61 - 79

Dvelopper des composants serveur

6.7.2.

Application

Cette partie concerne la configuration de l'application, notamment la configuration mail (smtp), le debug et tracing avec cassini (serveur web inclus) ou IIS.

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 62 - 79

Dvelopper des composants serveur

6.7.3.

Provider

Vous avez la possiblit de grer vos providers dans cette partie de l'administration. Bien entendu cela ne permet pas de crer une base de donne. Ici, vous pouvez soit, choisir un provider pour tous les composants, soit un par un, par exemple vous aurez le choix de choisir un provider pour les memberships, roles, profiles. Si vous ajoutez un provider par l'intermdiaire du fichier web.config, cela apparatra dans le WSAT aussi.

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 63 - 79

Dvelopper des composants serveur

7.Web Parts
7.1. Introduction aux WebParts
On voit apparatre de plus en plus souvent sur des sites, des portails, un systme de zone de fentrage tel que sur MyMSN, sur Google et Yahoo : ce sont les WebParts. Les WebParts reprsentent une nouvelle organisation et conception dun site WEB dont le principe se base sur un regroupement de contrle dans des zones modifiables dont on peut contrler laspect en reduisant la zone, en fermant la zone, en changeant des contrles dune zone un autre dynamiquement. Cette fonctionnalit se base ainsi sur des zones omposs de WebPart (contrle). Les utilisateurs peuvent contrler laffichage dune page, en choisissant les contrles afficher, la position des contrles, de changer lapparence de ces contrles, tout cela dynamiquement. Lutilisation des WebParts est associe aux memberships et la personnalisation qui permet lutilisateur de contrler tous les aspects des WebParts selon les autorisations appliques.

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 64 - 79

Dvelopper des composants serveur

Fig 3.1 MyMSN

7.2. Les diffrentes zones de WebParts


Proprits WebPartZone Description Zone par dfault et visible permettant linsertion de WebPart, dplacer et dposer possible entre deux WebPartZone. Zone ddition pour interagir avec les WebPartZone, compos de WebParts Editor. Zone invisible par dfault

EditorZone

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 65 - 79

Dvelopper des composants serveur


CatalogZone Zone contenant les WebParts invisible par dfault, des WebPart que lutilisateur fermer Zone invisible par dfault Zone permettant dditer les liens entre les WebParts. Zone invisible par dfault

ConnectionsZone

Toutes ces zones sont contrls par un WebPartManager, unique par page.

7.3. Cration des WebParts


Les WebPart et WebPartZone sont contrls par le WebPartManager, il faut donc le dposer sur la page pour pouvoir utiliser les WebParts. Ensuite, il faudra placer des WebPartZones qui en gnral sont placs dans des tableaux HTML (ou div).

Fig 3.2 Exemple cration des WebPartZone (mode design)

Il faut maintenant remplir les WebPartZone par des contrles, par exemple dposer un Label, une TextBox, . Voici un exemple qui servira tout au long de larticle :
<html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <asp:WebPartManager ID="WebPartManager1" runat="server"> </asp:WebPartManager> <table style="width:400px; border: solid 1px black; vertical-align: middle; text-align:center" border="1" cellpadding="0" cellspacing="0"> <tr> <td style="width:200px"> <asp:WebPartZone ID="Zone_3" runat="server"> <ZoneTemplate> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> </ZoneTemplate> </asp:WebPartZone> </td> <td style="width:200px">

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 66 - 79

Dvelopper des composants serveur


<asp:WebPartZone ID="Zone_3" runat="server"> <ZoneTemplate> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> </ZoneTemplate> </asp:WebPartZone> </td> </tr> <tr> <td style="width:200px"> <asp:WebPartZone ID="Zone_3" runat="server"> <ZoneTemplate> <asp:Button ID="Button1" runat="server" Text="Button" /> </ZoneTemplate> </asp:WebPartZone> </td> <td style="width:200px"> <asp:WebPartZone ID="Zone_4" runat="server"> <ZoneTemplate> <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label> </ZoneTemplate> </asp:WebPartZone> </td> </tr> </table> <br /> </form> </body> </html>

Fig 3.3 Exemple de cration de WebParts (mode design)

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 67 - 79

Dvelopper des composants serveur

Fig 3.4 Exemple de cration de WebParts (mode Browser)

Attention, vous devez obligatoirement tre connects (avec lutilisation des Membership) pour voir les WebParts. Par dfault, vous tes dans le mode Design permettant seulement de rduire ou fermer les WebParts.

7.4. Formatter des WebParts


Par dfault, les WebParts nont aucun style do lapparence pauvre. Pour cela, vous avez la possibilit dappliquer des styles pr-dfinies :

Fig 3.5 Formats proposs par dfaut

Lautre manire consiste appliquer un style dfinie par lutilisateur mme, grce aux lments de style dune WebPartZone.
Proprits PartChromeStyle Description Style de la zone vide dans une

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 68 - 79

Dvelopper des composants serveur


MenuLabelHoverStyle EmptyZoneTextStyle HeaderStyle MenuVerbStyle PartStyle MenuLabelStyle MenuPopupStyle PartTitleStyle WebPartZone Style du Label lorsque la souris survole le Label Style de la zone de texte vide Style de len-tte Style du menu dun WebParts Style des WebParts dans la zone Style des Labels dans le menu Style du menu en haut droite Style de titre du WebParts

Voici un exemple de style pour les WebPartZone :


<asp:WebPartZone ID="Zone_2" runat="server" BorderColor="#CCCCCC" Font-Names="Verdana" Padding="6"> <PartChromeStyle BackColor="#F7F6F3" BorderColor="#E2DED6" Font-Names="Verdana" ForeColor="White" /> <MenuLabelHoverStyle ForeColor="#E2DED6" /> <EmptyZoneTextStyle Font-Size="0.8em" /> <MenuLabelStyle ForeColor="White" /> <MenuVerbHoverStyle BackColor="#F7F6F3" BorderColor="#CCCCCC" BorderStyle="Solid" BorderWidth="1px" ForeColor="#333333" /> <HeaderStyle Font-Size="0.7em" ForeColor="#CCCCCC" HorizontalAlign="Center" /> <MenuVerbStyle BorderColor="#5D7B9D" BorderStyle="Solid" BorderWidth="1px" ForeColor="White" /> <PartStyle Font-Size="0.8em" ForeColor="#333333" /> <TitleBarVerbStyle Font-Size="0.6em" FontUnderline="False" ForeColor="White" /> <MenuPopupStyle BackColor="#5D7B9D" BorderColor="#CCCCCC" BorderWidth="1px" Font-Names="Verdana" Font-Size="0.6em" /> <PartTitleStyle BackColor="#5D7B9D" FontBold="True" Font-Size="0.8em" ForeColor="White" /> <ZoneTemplate> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> </ZoneTemplate> </asp:WebPartZone>

7.5. Changement de mode


Dans le mode par dfaut Browse Mode , vous avez seulement la possibilit de minimier la zone ou la fermer. Pour pouvoir diter les WebParts, changer certaines proprits, rcuperer des WebParts, il faut changer de mode. Pour cela, il faudra implmenter des fonctions permettant le changement de mode. Nous allons prendre un exemple avec une DropDownList compos des 5 diffrents mode (Browse Mode, Design, Catalog Mode, Edit Mode, Connect Mode).
<asp:DropDownList ID="DisplayModeDropdown" runat="server" AutoPostBack="true" EnableViewState="false" OnSelectedIndexChanged=

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 69 - 79

Dvelopper des composants serveur


"DisplayModeDropdown_SelectedIndexChanged" />

WebPartManager _webmanager; // on cre un objet WebPartManager void Page_Init(object sender, EventArgs e) { Page.InitComplete += new EventHandler(InitComplete); } protected void InitComplete(object sender, System.EventArgs e) { _webmanager = WebPartManager.GetCurrentWebPartManager(Page); String WebPartManager.BrowseDisplayMode.Name; browseModeName =

// remplit la dropdownlist avec les modes disponibles foreach (WebPartDisplayMode mode in _manager.SupportedDisplayModes) { String modeName = mode.Name; // vrification de la validit dun mode if (mode.IsEnabled(_webmanager)) { ListItem item = new ListItem(modeName + " Mode", modeName); DisplayModeDropdown.Items.Add(item); } } } // Changement de page selon le mode slectionn protected void DisplayModeDropdown_SelectedIndexChanged(object sender, EventArgs e) { String selectedMode = DisplayModeDropdown.SelectedValue; WebPartDisplayMode _manager.SupportedDisplayModes[selectedMode]; if (mode != null) _webmanager.DisplayMode = mode; } protected void Page_PreRender(object sender, EventArgs e) { DisplayModeDropdown.SelectedValue _webmanager.DisplayMode.Name; } mode =

- La fonction Page_Init permet dinitialiser les contrles pendant le chargement de la page et fait appel la fonction InitComplete.

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 70 - 79

Dvelopper des composants serveur - La fonction InitComplete rcupre le WebPartManager de la page concerne, tant donn quil est unique il existe un et un seul WebPartManager. Il stock le WebPartManager dans lobjet _webmanager. Ensuite, une boucle permet de remplir la DropDownList des modes daffichage selon leur disponibilit. Par exemple si un Catalog Zone est disponible, on affichera le mode Catalog Mode dans la DropDownList, dans le cas contraire il ne sera pas affich. - La fonction DisplayModeDropdown est appele suite au changement dindex de la DropDownList et permet le changement de page selon le mode slectionn. - La fonction Page_PreRender permet tout simplement de mettre jour lobjet _webmanager en fonction du mode slectionn dans la DropDownList. Etant donn que ces diffrents modes ne sont pas visibles par dfaut, et ncessitent une connection, il faudra rajout le contrle de Login pour permettre lutilisateur de se connecter et daccder ensuite aux diffrents modes. Voici lapparence des WebParts et mode disponible par dfaut :

Fig 3.6 Mode par dfaut avant connection

Apparence des WebParts et mode disponible aprs connexion :

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 71 - 79

Dvelopper des composants serveur

Fig 3.7 Mode disponible aprs connexion

7.6. CatalogZone
Un catalogue contient les WebParts qui ne sont pas utiliss ou qui ne doivent pas apparatre par dfaut. Il contient aussi les WebParts que lutilisateur fermer. Lutilisateur connect pourra ainsi construire sa page de WebParts grce un catalogue que ladministrateur aura remplit de WebPart auparavant. Qui dit catalogue, dit possibilit de choisir plusieurs reprise le mme WebPart et linsrer dans une zone, par exemple si vous choisissez un Label du catalogue, vous aurez la possibilit de linsrer autant de fois que vous le souhaitez, tant donn quil nest pas unique. Un catalogue est donc essentiellement une collection de WebParts disponible, do le nom de Catalog . Pour construire son catalogue, il faut tout dabord insrer une zone catalogue dans lequel on pourra ajouter trois type dlments. Un catalogue de page ( Page Catalog ) qui sera compos des WebParts ferms par lutilisateur, une dclaration de catalogue ( DeclarativeCatalogPart ) qui permet ladministrateur de lapplication WEB de remplir le catalogue de WebParts, et enfin un importateur de WebPart ( Import Catalog Part ) permettant lutilisateur dimporter des WebParts depuis sa machine. Voici le code source dun CatalogZone sans aucun style :
<asp:CatalogZone ID="CatalogZone1" runat="server"> <ZoneTemplate> <asp:PageCatalogPart ID="PageCatalogPart1" runat="server" /> <asp:DeclarativeCatalogPart ID="DeclarativeCatalogPart1" runat="server"> <WebPartsTemplate> <asp:Label ID="Label3" runat="server" Text="Label"></asp:Label> <br /> <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> </WebPartsTemplate> </asp:DeclarativeCatalogPart> <asp:ImportCatalogPart ID="ImportCatalogPart1" runat="server" /> </ZoneTemplate> </asp:CatalogZone>

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 72 - 79

Dvelopper des composants serveur Le PageCatalogPart et ImportCatalogPart ne sont pas ditables, il suffit tout simplement de les dposer dans le CatalogZone. Pour ce qui est de la DeclarativeCatalogPart, il faut diter le template pour pouvoir insrer des WebParts pour construire le catalogue.

Fig 3.8 CatalogZone

Le PageCatalog ci-dessous contient quatre WebParts ferms par lutilisateur. Pour rcuprer ces WebParts, il suffit de cocher les WebPart rcuprer puis choisir la zone puis cliquez sur le bouton Add .

Fig 3.9 Page Catalog

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 73 - 79

Dvelopper des composants serveur La DeclarativeCatalog comme ci-dessous contient deux WebParts. Pour les ajouter dans une nouvelle zone il suffit de cocher les WebParts concernes et la zone.

Fig 3.10 Declarative Catalog

LImport Catalog Part comme ci-dessous permet dimporter des WebPart, pour cela il faut spcifier le chemin et la zone.

Fig 3.11 Import WebParts

7.7. EditorZone
Les WebParts sont modifiables dans la zone ddition Editor Zone par lintermdiaire de quatre types dlment de modification : - ApparenceEditorPart - BehaviorEditorPart - LayoutEditorPart - PropertyGridEditorPart Voici les sources dun EditorZone sans style appliqu :

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 74 - 79

Dvelopper des composants serveur


<asp:EditorZone ID="EditorZone1" runat="server"> <ZoneTemplate> <asp:AppearanceEditorPart runat="server" ID="Appearance1"> </asp:AppearanceEditorPart> <asp:LayoutEditorPart runat="server" ID="Layout1"> </asp:LayoutEditorPart> <asp:BehaviorEditorPart ID="BehaviorEditorPart1" runat="server" /> <asp:PropertyGridEditorPart ID="PropertyGridEditorPart1" runat="server" /> </ZoneTemplate> </asp:EditorZone>

Pour accder aux diffrents menus de modification, il faut tre connect, tre dans le mode Edit Mode et choisir le WebPart modifier en accdant son menu (en haut droit de chaque WebPart) puis choisir Edit. ApparenceEditorPart va vous permettre de modifier lapparence des WebParts notamment le titre, la taille, la visiblit.

Le LayoutEditorPart permet principalement de modifier la zone conteneur.

Le BehaviorEditorPart permet de contrler le comportement des WebParts, de pouvoir fermer, diminuer, modifier, cacher les WebParts, de modifier leur description, les liens.

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 75 - 79

Dvelopper des composants serveur

Le PropertyGridEditorPart permet dditer des proprits dans le code source ayant comme attribut WebBrowsable .

7.8. Conclusion
Les WebParts permettent ainsi de crer des portails dynamique et facilement personnalisable. Cette nouvelle fonctionnalit, de plus en plus rpandue sur de grand site tel que Google et Yahoo, permet lutilisateur

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 76 - 79

Dvelopper des composants serveur de construire sa page, dajouter ou denlever des fentres selon son choix, de dfinir lapparence et la disposition de ses fentre. Lutilisateur a un contrle quasi-total de la page Web. Il est cependant dommage que les WebParts intgrs par dfaut lASP.NET 2.0 ne soit pas un contrle cot client, plus exactement avec lintgration dun CallBack sans aucun rafrachissement de la page. Il est aujourdhui possible de rsoudre ce problme en implmentant la version AJAX de Microsoft pour lASP.NET, ATLAS.

8.Conclusion
Les nouveauts du langage ASP.NET 2.0 de Microsoft apportent non seulement une simplicit au dveloppeur dans son travail, mais aussi des nouvelles interfaces WEB, des nouvelles fonctionnalits pour les utilisateurs et clients. Ce langage innovant apporte une nouvelle conception des sites Internet de nouvelle gnration , de plus les applications WEB dveloppes en ASP.NET 2.0 seront combines avec la version AJAX de Microsoft, ATLAS pour rendre la navigation fluide et sans aucun rafrachissement. Dautres nouveauts nont pas t traites dans cette article sont aussi important, comme les nouveaux contrles de Login et de donnes (GridView, DetailsView, ), et la scurit des applications.

OFPPT @

Document
C-A-001.doc

Millsime
mars 11

Page 77 - 79

Vous aimerez peut-être aussi