Vous êtes sur la page 1sur 94

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

Dvelopper des composants serveur

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

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 1 - 94

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

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 2 - 94

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 stocke 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.

1.1.

Intrt d'un formulaire

Les formulaires interactifs permettent aux dveloppeurs des pages Web de donner leurs pages web un ensemble d'lments interactifs permettant de faire un dialogue avec les internautes(client), exemple(inscription a un site web).

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 3 - 94

Dvelopper des composants serveur

Le client saisit des informations en remplissant des champs (<input >.) en cliquant sur un bouton de validation(submit) pour l'envoyer soit un URL, c'est--dire de faon gnrale une adresse e-mail ou un script de page web dynamique tel que PHP, ASP ou un script CGI.

1.2.

La balise FORM

Les formulaires sont dlimits par la balise <FORM> ... </FORM>, une balise qui permet de regrouper plusieurs lments de formulaire (boutons,champs de saisie,...) et qui possde les attributs obligatoires suivants :

METHOD indique sous quelle forme seront envoyes les donnes POST est la valeur qui correspond un envoi de donnes stockes dans le corps de la requte, tandis que GET correspond un envoi des donnes codes dans l'URL. ACTION indique l'adresse d'envoi

La balise FORM possde comme attribut facultatif ENCTYPE qui spcifie le codage des donnes dans l'URL, toutefois il n'est pas ncessaire de le prciser car la valeur attribue par dfaut (application/x-www-form-urlencoded) est la seule valeur valide. L'attribut facultatif ACCEPT permet de dfinir les types MIME des donnes pouvant tre envoyes par le formulaire.

Voici la syntaxe de la balise FORM :


<FORM METHOD="POST" ou "GET" ACTION="url" ENCTYPE="x-www-form-urlencoded"> ... </FORM>

Voici quelques exemples de balises FORM :


<FORM METHOD=POST ACTION="mailto:webmaster@commentcamarche.net"> <FORM METHOD=GET ACTION="http://www.commentcamarche.net/cgibin/script.cgi">

Recuperation des donnes envoyes

1.3.

A l'intrieur de la balise FORM...

La balise FORM constitue en quelque sorte un conteneur permettant de regrouper des lments qui vont permettre l'utilisateur de choisir ou de saisir des donnes, ensemble de

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 4 - 94

Dvelopper des composants serveur

donnes qui seront envoyes l'URL indiqu dans l'attribut ACTION de la balise FORM par la mthode indique par l'attribut METHOD. Il est possible d'insrer n'importe quel lment HTML de base dans une balise FORM (textes,boutons,tableaux,liens,...) mais il est surtout intressant d'insrer des lments interactifs. Ces lments interactifs sont :

La balise INPUT: un ensemble de boutons et de champs de saisie La balise TEXTAREA: une zone de saisie La balise SELECT: une liste choix multiples

1.4.

Envoi des donnes

Lorsqu'un formulaire est soumis (appui sur le bouton de soumission), les donnes prsentes dans le formulaire sont envoyes au script CGI sous forme de paires nom/valeur, c'est--dire un ensemble de donnes reprsentes par le nom de l'lment de formulaire, le caractre "=", puis la valeur associe. L'ensemble de ces paires nom/valeur tant spares entre elles par des esperluettes (caractre &). Les donnes envoyes ressembleront donc ceci :
champ1=valeur1&champ2=valeur2&champ3=valeur3

Dans le cas de la mthode GET (envoi des donnes travers l'URL), l'URL ressemblera une chane du genre :
http://www.commentcamarche.net/cgi-bin/script.cgi?champ1=val1&champ2=val2

1.5.

La balise INPUT

La balise INPUT est la balise essentielle des formulaires, car elle permet de crer un bon nombre d'lments "interactifs". La syntaxe de cette balise est la suivante :
<INPUT type="Nom du champ" value="Valeur par dfaut" name="Nom de l'lment">

L'attribut name est essentiel car il permettra au script CGI de connatre le champ associ la paire nom/valeur, c'est--dire que le nom du champ sera suivi du caractre "=" puis de la valeur entre par l'utilisateur, ou dans le cas contraire de la valeur par dfaut repr par l'attribut value. L'attribut type permet de prciser le type d'lment que reprsente la balise INPUT, voici les valeurs que ce champ peut prendre :

checkbox: il s'agit de cases cocher pouvant admettre deux tats : checked (coch) et unchecked (non coch). Lorsque la case est coch la paire nom/valeur est envoye au CGI hidden: il s'agit d'un champ cach. Ce champ non visible sur le formulaire permet de prciser un paramtre fixe qui sera envoy au CGI sous forme de paire nom/valeur file: il s'agit d'un champ permettant l'utilisateur de prciser l'emplacement d'un fichier qui sera envoy avec le formulaire. Il faut dans ce cas prciser le type de donnes pouvant tre envoyes grce l'attribut ACCEPT de la balise FORM image: il s'agit d'un bouton de soumission personnalis, dont l'apparence est l'image situ l'emplacement prcis par son attribut SRC

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 5 - 94

Dvelopper des composants serveur password: il s'agit d'un champ de saisie, dans lequel les caractres saisis apparaissent sous forme d'astrisques afin de camoufler la saisie de l'utilisateur radio: il s'agit d'un bouton permettant un choix parmi plusieurs proposs (l'ensemble des boutons radios devant porter le mme attribut name. La paire nom/valeur du bouton radio slectionn sera envoy au CGI. Un attribut checked pour un des boutons permet de prciser le bouton slectionn par dfaut reset: il s'agit d'un bouton de remise zro permettant uniquement de rtablir l'ensemble des lments du formulaire leurs valeurs par dfaut submit: il s'agit du bouton de soumission permettant l'envoi du formulaire. Le texte du bouton peut tre prcis grce l'attribut value text: il s'agit d'un champ de saisie permettant la saisie d'une ligne de texte. La taille du champ peut tre dfinie l'aide de l'attribut size et la taille maximale du texte saisi grce l'attribut maxlength

1.6.

La balise TEXTAREA

La balise TEXTAREA permet de dfinir une zone de saisie plus vaste par rapport la simple ligne de saisie que propose la balise INPUT. Cette balise possde les attributs suivants :

cols: reprsente le nombre de caractres que peut contenir une ligne rows: reprsente le nombre de lignes name: reprsente le nom associ au champ, c'est le nom qui permettra d'identifier le champ dans la paire nom/valeur readonly: permet d'empcher l'utilisateur de modifier le texte entr par dfaut dans le champ value: reprsente la valeur qui sera envoye par dfaut au script si le champ de saisie n'est pas modifi par une frappe de l'utilisateur

1.7.

La balise SELECT

La balise SELECT permet de crer une liste droulante d'lments (prciss par des balises OPTION l'intrieur de celle-ci). Les attributs de cette balise sont :

name: reprsente le nom associ au champ, c'est le nom qui permettra d'identifier le champ dans la paire nom/valeur disabled: permet de crer une liste dsactive, c'est--dire affiche en grise size: reprsente le nombre de lignes dans la liste (cette valeur peut tre plus grande que le nombre d'lments effectifs dans la liste) multiple: marque la possibilit pour l'utilisateur de choisir plusieurs champs dans la liste

1.8.

Un exemple de formulaire

Les formulaires peuvent tre mis en page l'aide de tableaux (cela est mme conseill pour avoir une mise en page soigne). Voici un exemple rcapitulant les points ci-dessus et montrant comment mettre en page un formulaire l'aide d'un tableau :
<FORM method=post action="cgi-bin/script.pl">

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 6 - 94

Dvelopper des composants serveur


Enregistrement d'un utilisateur <TABLE BORDER=0> <TR> <TD>Nom</TD> <TD> <INPUT type=text name="nom"> </TD> </TR> <TR> <TD>Prnom</TD> <TD> <INPUT type=text name="prenom"> </TD> </TR> <TR> <TD>Sexe</TD> <TD> Homme : <INPUT type=radio name="sexe" value="M"> <br>Femme : <INPUT type=radio name="sexe" value="F"> </TD> </TR> <TR> <TD>Fonction</TD> <TD> <SELECT name="fonction"> <OPTION VALUE="enseignant">Enseignant</OPTION> <OPTION VALUE="etudiant">Etudiant</OPTION> <OPTION VALUE="ingenieur">Ingnieur</OPTION> <OPTION VALUE="retraite">Retrait</OPTION> <OPTION VALUE="autre">Autre</OPTION> </SELECT> </TD> </TR> <TR> <TD>Commentaires</TD> <TD> <TEXTAREA rows="3" name="commentaires"> Tapez ici vos commentaires</TEXTAREA> </TD> </TR> <TR> <TD COLSPAN=2> <INPUT type="submit" value="Envoyer"> </TD> </TR> </TABLE> </FORM>

Voici le rsultat de ce code HTML


Enregistrement d'un utilisateur Nom Prnom Sexe Homme Document
C-A-001.doc

: Millsime
dcembre 11

OFPPT @

Page 7 - 94

Dvelopper des composants serveur Femme : Fonction Commentaires


Enseignant
Tapez ici vos commentaires

Envoyer

1.9.

Attributs de la balise FORM et types d'entres


Balise Attribut METHOD Valeur POST GET Rsultat Effet Visuel envoie l'adresse indique spcifie le type de codage utilis effectue l'ACTION dans le balise <FORM> simple ligne de texte dont la longueur est donne par l'attribut size efface le contenu du formulaire bouton radio case cocher Nom Taille texte du

<FORM> ... </FORM>

ACTION

ENCTYPE

submit

Envoyer

text TYP E <INPUT> reset

Rtablir

radio checkb ox NAM E SIZ E NAM E RO WS COL S

<TEXTAR EA> ... </TEXTAR EA>

Zone texte

de

<SELECT > <OPTION> ... </OPTION> </SELECT> <OPTION > ... </OPTION

NAM E MUL TIPL E SEL ECT ED Option par dfaut Plusieurs choix possibles

Choix 1

Choix 1

Choix 1 Choix 2 Choix 3

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 8 - 94

Dvelopper des composants serveur


> VAL UE Valeur force

Lire la suite

1.10. Introduction au protocole HTTP


Le protocole HTTP (HyperText Transfer Protocol) est le protocole le plus utilis sur Internet depuis 1990. La version 0.9 tait uniquement destine transfrer des donnes sur Internet (en particulier des pages Web crites en HTML. La version 1.0 du protocole (la plus utilise) permet dsormais de transfrer des messages avec des en-ttes dcrivant le contenu du message en utilisant un codage de type MIME. Le but du protocole HTTP est de permettre un transfert de fichiers (essentiellement au format HTML) localiss grce une chane de caractres appele URL entre un navigateur (le client) et un serveur Web (appel d'ailleurs httpd sur les machines UNIX).

1.11. Communication entre navigateur et serveur


La communication entre le navigateur et le serveur se fait en deux temps :

Le navigateur effectue une requte HTTP Le serveur traite la requte puis envoie une rponse HTTP Document
C-A-001.doc

OFPPT @

Millsime
dcembre 11

Page 9 - 94

Dvelopper des composants serveur En ralit la communication s'effectue en plus de temps si on considre le traitement de la requte par le serveur. Etant donn que l'on s'intresse uniquement au protocole HTTP, le traitement du ct serveur ne sera pas explicit dans le cadre de cet article... Si ce sujet vous intresse, rfrez-vous l'article sur le traitement des CGI.

1.12. Requte HTTP


Une requte HTTP est un ensemble de lignes envoy au serveur par le navigateur. Elle comprend :

Une ligne de requte: c'est une ligne prcisant le type de document demand, la mthode qui doit tre applique, et la version du protocole utilise. La ligne comprend trois lments devant tre spars par un espace : o La mthode o L'URL o La version du protocole utilis par le client (gnralement HTTP/1.0) Les champs d'en-tte de la requte: il s'agit d'un ensemble de lignes facultatives permettant de donner des informations supplmentaires sur la requte et/ou le client (Navigateur, systme d'exploitation, ...). Chacune de ces lignes est compose d'un nom qualifiant le type d'en-tte, suivi de deux points (:) et de la valeur de l'en-tte Le corps de la requte: c'est un ensemble de lignes optionnelles devant tre spares des lignes prcdentes par une ligne vide et permettant par exemple un envoi de donnes par une commande POST lors de l'envoi de donnes au serveur par un formulaire

Une requte HTTP a donc la syntaxe suivante (<crlf> signifie retour chariot ou saut de ligne) :
METHODE URL VERSION<crlf> EN-TETE : Valeur<crlf> . . . EN-TETE : Valeur<crlf> Ligne vide<crlf> CORPS DE LA REQUETE

Voici donc un exemple de requte HTTP :


GET http://www.commentcamarche.net HTTP/1.0 Accept : text/html If-Modified-Since : Saturday, 15-January-2000 14:37:11 GMT User-Agent : Mozilla/4.0 (compatible; MSIE 5.0; Windows 95)

1.12.1.

Commandes
Description Requte de la ressource situe l'URL spcifie Document Millsime Page C-A-001.doc dcembre 11 10 - 94

Commande GET

OFPPT @

Dvelopper des composants serveur HEAD Requte de l'en-tte de la ressource situe l'URL spcifie POST Envoi de donnes au programme situ l'URL spcifie PUT Envoi de donnes l'URL spcifie DELETE Suppression de la ressource situe l'URL spcifie

1.12.2.

En-ttes
Description Type de contenu accept par le browser (par exemple text/html). Voir types MIME Jeu de caractres attendu par le browser Codage de donnes accept par le browser Langage attendu par le browser (anglais par dfaut) Identification du browser auprs du serveur Type de codage du corps de la requte Type de langage du corps de la requte Longueur du corps de la requte Type de contenu du corps de la requte (par exemple text/html). Voir types MIME Date de dbut de transfert des donnes Utilis par les machines intermdiaires entre le browser et le serveur Permet de spcifier l'adresse e-mail du client Permet de spcifier que le document doit tre envoy s'il a t modifi depuis une certaine date Relation entre deux URL URL d'origine de la requte URL du lien partir duquel la requte a t effectue Chane donnant des informations sur le client, comme le nom et la version du navigateur, du systme d'exploitation

Nom de l'entte Accept AcceptCharset AcceptEncoding AcceptLanguage Authorization ContentEncoding ContentLanguage ContentLength Content-Type Date Forwarded From From Link Orig-URL Referer User-Agent

1.13. Rponse HTTP


Une rponse HTTP est un ensemble de lignes envoyes au navigateur par le serveur. Elle comprend :

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 11 - 94

Dvelopper des composants serveur Une ligne de statut: c'est une ligne prcisant la version du protocole utilis et l'tat du traitement de la requte l'aide d'un code et d'un texte explicatif. La ligne comprend trois lments devant tre spars par un espace : o La version du protocole utilis o Le code de statut o La signification du code Les champs d'en-tte de la rponse: il s'agit d'un ensemble de lignes facultatives permettant de donner des informations supplmentaires sur la rponse et/ou le serveur. Chacune de ces lignes est compose d'un nom qualifiant le type d'en-tte, suivi de deux points (:) et de la valeur de l'entte Le corps de la rponse: il contient le document demand

Une rponse HTTP a donc la syntaxe suivante (<crlf> signifie retour chariot ou saut de ligne) :
VERSION-HTTP CODE EXPLICATION<crlf> EN-TETE : Valeur<crlf> . . . EN-TETE : Valeur<crlf> Ligne vide<crlf> CORPS DE LA REPONSE

Voici donc un exemple de rponse HTTP :


HTTP/1.0 200 OK Date : Sat, 15 Jan 2000 14:37:12 GMT Server : Microsoft-IIS/2.0 Content-Type : text/HTML Content-Length : 1245 Last-Modified : Fri, 14 Jan 2000 08:25:13 GMT

1.13.1.

En-ttes de rponse
Description</souligne> Type de codage du corps de la rponse Type de langage du corps de la rponse Longueur du corps de la rponse Type de contenu du corps de la rponse (par exemple text/html). Voir types MIME Date de dbut de transfert des donnes Date limite de consommation des donnes Utilis par les machines intermdiaires entre le browser et le serveur Redirection vers une nouvelle URL Document
C-A-001.doc

Nom de l'entte</souligne> Content-Encoding Content-Language Content-Length Content-Type Date Expires Forwarded Location

OFPPT @

Millsime
dcembre 11

Page 12 - 94

Dvelopper des composants serveur associe au document Server Caractristiques du serveur ayant envoy la rponse

1.13.2.

Les codes de rponse

Ce sont les codes que vous voyez lorsque le navigateur n'arrive pas vous fournir la page demande. Le code de rponse est constitu de trois chiffres : le premier indique la classe de statut et les suivants la nature exacte de l'erreur. Code 10x Message Message d'information Russite OK CREATED Description Ces codes ne sont pas utiliss dans la version 1.0 du protocole Ces codes indiquent le bon droulement de la transaction La requte a t accomplie correctement Elle suit une commande POST, elle indique la russite, le corps du reste du document est sens indiquer l'URL laquelle le document nouvellement cr devrait se trouver. La requte a t accepte, mais la procdure qui suit n'a pas t accomplie Lorsque ce code est reu en rponse une commande GET, cela indique que la rponse n'est pas complte. Le serveur a reu la requte mais il n'y a pas d'information renvoyer Le serveur indique au navigateur de supprimer le contenu des champs d'un formulaire Il s'agit d'une rponse une requte comportant l'en-tte range. Le serveur doit Millsime
dcembre 11

20x 200 201

202

ACCEPTED

203

PARTIAL INFORMATION

204

NO RESPONSE

205

RESET CONTENT

206

PARTIAL CONTENT

OFPPT @

Document
C-A-001.doc

Page 13 - 94

Dvelopper des composants serveur indiquer l'en-tte content-Range Ces codes indiquent que la ressource n'est plus l'emplacement indiqu Les donnes demandes ont t transfres une nouvelle adresse Les donnes demandes sont une nouvelle URL, mais ont cependant peut-tre t dplaces depuis... Cela implique que le client doit essayer une nouvelle adresse, en essayant de prfrence une autre mthode que GET Si le client a effectu une commande GET conditionnelle (en demandant si le document a t modifi depuis la dernire fois) et que le document n'a pas t modifi il renvoie ce code. Ces codes indiquent que la requte est incorrecte La syntaxe de la requte est mal formule ou est impossible satisfaire Le paramtre du message donne les spcifications des formes d'autorisation acceptables. Le client doit reformuler sa requte avec les bonnes donnes d'autorisation Le client doit reformuler sa demande avec les bonnes donnes de paiement Millsime Page dcembre 11 14 - 94

30x

Redirection

301

MOVED

302

FOUND

303

METHOD

304

NOT MODIFIED

40x 400

Erreur due au client BAD REQUEST

401

UNAUTHORIZED

402

PAYMENT REQUIRED

OFPPT @

Document
C-A-001.doc

Dvelopper des composants serveur 403 FORBIDDEN 404 NOT FOUND

50x

Erreur due au serveur INTERNAL ERROR

500

501

NOT IMPLEMENTED BAD GATEWAY

502

503

SERVICE UNAVAILABLE

504

GATEWAY TIMEOUT

L'accs la ressource est tout simplement interdit Classique! Le serveur n'a rien trouv l'adresse spcifie. Parti sans laisser d'adresse... :) Ces codes indiquent qu'il y a eu une erreur interne du serveur Le serveur a rencontr une condition inattendue qui l'a empch de donner suite la demande (comme quoi il leur en arrive des trucs aux serveurs...) Le serveur ne supporte pas le service demand (on ne peut pas tout savoir faire...) Le serveur a reu une rponse invalide de la part du serveur auquel il essayait d'accder en agissant comme une passerelle ou un proxy Le serveur ne peut pas vous rpondre l'instant prsent, car le trafic est trop dense (toutes les lignes de votre correspondant sont occupes veuillez rappeler ultrieurement) La rponse du serveur a t trop longue vis-vis du temps pendant lequel la passerelle tait prpare l'attendre (le temps qui vous tait imparti est maintenant coul...)

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 15 - 94

Dvelopper des composants serveur

1.14. Environnement de dveloppement


1.14.1. Un serveur Web
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.14.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.14.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.14.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
dcembre 11

Page 16 - 94

Dvelopper des composants serveur

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 17 - 94

Dvelopper des composants serveur

Terminer votre cration en laissant les paramtres par dfaut.

1.14.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.14.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
dcembre 11

Page 18 - 94

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.14.4.

Visual Studio ou Visual Web Developper

Il est bien vident qu'un EDI digne de ce nom vous offre une multitude d'avantages comme la compltion du code, l'initialisation automatique de vos pages, les contrles utilisateurs, ... malgr que, dans quelques cas, il est parfois plus avantageux de coder directement son contrle dans la page HTML plutt que de passer par le Designer de l'EDI. Que vous utilisiez Visual Studio ou Visual Web Developper (EDI gratuit et tlchargeable sur le site de Microsoft France), le dmarrage de votre application sera presque le mme. La seule diffrence vient du fait que Visual Studio tant un EDI qui regroupe plusieurs possibilits de dveloppement, vous devrez spcifier que vous dsirez travailler avec un nouveau projet web avant d'arriver sur cette page de configuration :

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 19 - 94

Dvelopper des composants serveur

Il est primordial de bien configurer les informations dans Emplacement (Location) et Langage (Language) ainsi que l'adresse du site que vous dsirez dvelopper sur votre serveur IIS local (localhost). Visual Web Developper comporte un serveur "intgr". Si vous ne comptez l'utiliser qu'en dveloppement, ce serveur Visual Studio est largement suffisant.

1.15. La gestion dEtat


1.15.1. Premire page
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.

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 20 - 94

Dvelopper des composants serveur 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 :

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 :

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 21 - 94

Dvelopper des composants serveur

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

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 :

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 22 - 94

Dvelopper des composants serveur 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 : 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 :

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 23 - 94

Dvelopper des composants serveur

Par dfaut, le dbogage n'est pas activ au niveau des applications web. On vous conseille fortement de l'activer en rpondant OK avec 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.

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 24 - 94

Dvelopper des composants serveur

1.15.2.

Des vnements particuliers

En tant que programmeur, nous sommes pratiquement tous habitus entendre parler d'vnements, nous venons encore de nous en servir 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.15.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 Application_End signifie pas que IIS s'arrte mais est d'office appel si, pour une raison quelconque IIS est arrt

1.15.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" :

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 25 - 94

Dvelopper des composants serveur

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 utilisaterus 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.15.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.

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 26 - 94

Dvelopper des composants serveur

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 27 - 94

Dvelopper des composants serveur

1.15.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.15.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. 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 ViewStaerte("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

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 28 - 94

Dvelopper des composants serveur

1.15.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 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.15.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) Document Millsime Page OFPPT @ C-A-001.doc dcembre 11 29 - 94

Dvelopper des composants serveur 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) :

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.15.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

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 30 - 94

Dvelopper des composants serveur 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.15.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 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.15.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 Document
C-A-001.doc

OFPPT @

Millsime
dcembre 11

Page 31 - 94

Dvelopper des composants serveur

1.15.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=de l&email=abc@prov.fr

1.16. 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.

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 32 - 94

Dvelopper des composants serveur

1.16.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. 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"> Protected colors 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

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 33 - 94

Dvelopper des composants serveur


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> <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.16.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.

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 34 - 94

Dvelopper des composants serveur 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.17. 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. Les principaux contrles de validation sont : RequiredFieldValidator RangeValidator CompareValidator RegularExpressionValidator CustomValidator ValidationSummary Voyons un peu les caractristiques gnrales de chacun.

1.17.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.

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 35 - 94

Dvelopper des composants serveur


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 celui-ci 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".

1.17.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>

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 36 - 94

Dvelopper des composants serveur

1.17.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>

1.17.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.17.5.

CustomValidator
Document
C-A-001.doc

OFPPT @

Millsime
dcembre 11

Page 37 - 94

Dvelopper des composants serveur


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.17.6.

ValidationSummary

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 Document Millsime Page OFPPT @ C-A-001.doc dcembre 11 38 - 94

Dvelopper des composants serveur 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 : 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 Document
C-A-001.doc

OFPPT @

Millsime
dcembre 11

Page 39 - 94

Dvelopper des composants serveur 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. 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. Pour plus d'informations

ObjectDataSource

SqlDataSource

AccessDataSource XmlDataSource

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

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 40 - 94

Dvelopper des composants serveur 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 fonctionnement Document
C-A-001.doc

OFPPT @

Millsime
dcembre 11

Page 41 - 94

Dvelopper des composants serveur AdRotator 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. Daralist Gnre le rendu des donnes dans une table. Le rendu de chaque lment est gnr l'aide d'un modle d'lment que vous dfinissez. DetailsView Affiche un seul enregistrement la fois sous une forme tabulaire et permet de modifier, de supprimer et d'insrer des enregistrements. Vous pouvez galement parcourir plusieurs enregistrements. FormView 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 pagination des donnes sans ncessiter de code. Menu Repeater 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 que vous dfinissez. TreeView Gnre le rendu des donnes dans une arborescence hirarchique de nuds qu'il est possible de dvelopper.

3. Master Page
3.1. Introduction aux MasterPages
Depuis longtemps, les dveloppeurs ont toujours t contraint de dupliquer les sources HTML du design sur chaque page. Dautre solution

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 42 - 94

Dvelopper des composants serveur 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

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.

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 43 - 94

Dvelopper des composants serveur

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. 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" style="width:600px; height:400px"> <tr> <td colspan="2" style="height: 50px"> <asp:ContentPlaceHolder runat="server"></asp:ContentPlaceHolder> </td> </tr> <tr> <td style="width: 99px; height: 350px">

border="1"

ID="top"

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 44 - 94

Dvelopper des composants serveur


<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>

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.

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 45 - 94

Dvelopper des composants serveur

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.


<%@ 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 :

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 46 - 94

Dvelopper des composants serveur

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

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 47 - 94

Dvelopper des composants serveur

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
dcembre 11

Page 48 - 94

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

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"

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 49 - 94

Dvelopper des composants serveur


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" 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"

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 50 - 94

Dvelopper des composants serveur


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
dcembre 11

Page 51 - 94

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
dcembre 11

Page 52 - 94

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
dcembre 11

Page 53 - 94

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
dcembre 11

Page 54 - 94

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
dcembre 11

Page 55 - 94

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
dcembre 11

Page 56 - 94

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_GetNumberOfInactiveProfiles

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

aspnet_Profile_GetProfiles

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 57 - 94

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
dcembre 11

Page 58 - 94

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" connectionString="Data Source=JUN\SQLExpress;Initial Catalog=test;Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionStrings> <system.web> <compilation debug="true"/> <authentication mode="Windows"/> <pages theme="test"/> <anonymousIdentification enabled="true"/> <profile enabled="true"> <providers> <add name="AspNetSqlProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="testConnectionString"></add> </providers> <properties>

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 59 - 94

Dvelopper des composants serveur


<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 Le contenu de la table aspnet_Profile avant validation :

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 60 - 94

Dvelopper des composants serveur

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 :
<profile enabled="true"> <providers>

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 61 - 94

Dvelopper des composants serveur


<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
dcembre 11

Page 62 - 94

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' decryptionKey='685F5FA7DD04AEE2A3C203A55612D6

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 63 - 94

Dvelopper des composants serveur


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"> <forms defaultUrl="default.aspx" loginUrl="login.aspx" mode="Off"

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 64 - 94

Dvelopper des composants serveur


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"> <system.web> <authorization> <allow users="?"/>

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 65 - 94

Dvelopper des composants serveur


</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
dcembre 11

Page 66 - 94

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
dcembre 11

Page 67 - 94

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
dcembre 11

Page 68 - 94

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)

Bt_Register_Click(object

sender,

Membership.CreateUser(TBox_Login.Text, TBox_Pwd.Text) End sub

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 69 - 94

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.
2 Utilisation des Memberships et roles

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 70 - 94

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
dcembre 11

Page 71 - 94

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
dcembre 11

Page 72 - 94

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
dcembre 11

Page 73 - 94

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
dcembre 11

Page 74 - 94

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
dcembre 11

Page 75 - 94

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
dcembre 11

Page 76 - 94

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
dcembre 11

Page 77 - 94

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
dcembre 11

Page 78 - 94

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
dcembre 11

Page 79 - 94

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 composs 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

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 80 - 94

Dvelopper des composants serveur personnalisation qui permet lutilisateur de contrler tous les aspects des WebParts selon les autorisations appliques.

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.

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 81 - 94

Dvelopper des composants serveur


EditorZone Zone ddition pour interagir avec les WebPartZone, compos de WebParts Editor. Zone invisible par dfault 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

CatalogZone

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>

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 82 - 94

Dvelopper des composants serveur


</asp:WebPartZone> </td> <td style="width:200px"> <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
dcembre 11

Page 83 - 94

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
dcembre 11

Page 84 - 94

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
dcembre 11

Page 85 - 94

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 browseModeName WebPartManager.BrowseDisplayMode.Name; =

// 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 mode _manager.SupportedDisplayModes[selectedMode]; if (mode != null) _webmanager.DisplayMode = mode; } protected void Page_PreRender(object sender, EventArgs e) { DisplayModeDropdown.SelectedValue _webmanager.DisplayMode.Name; } =

- La fonction Page_Init permet dinitialiser les contrles pendant le chargement de la page et fait appel la fonction InitComplete. - La fonction InitComplete rcupre le WebPartManager de la page concerne, tant donn quil est unique il existe un et un seul

OFPPT @

Document
C-A-001.doc

Millsime
dcembre 11

Page 86 - 94

Dvelopper des composants serveur 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
dcembre 11

Page 87 - 94

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
dcembre 11

Page 88 - 94

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
dcembre 11

Page 89 - 94

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
dcembre 11

Page 90 - 94

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
dcembre 11

Page 91 - 94

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
dcembre 11

Page 92 - 94

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
dcembre 11

Page 93 - 94