Académique Documents
Professionnel Documents
Culture Documents
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
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.
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
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.
1.3.
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
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.
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
: Millsime
dcembre 11
OFPPT @
Page 7 - 94
Envoyer
1.9.
ACTION
ENCTYPE
submit
Envoyer
Rtablir
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
OFPPT @
Document
C-A-001.doc
Millsime
dcembre 11
Page 8 - 94
Lire la suite
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.
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
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
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
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.
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
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
401
UNAUTHORIZED
402
PAYMENT REQUIRED
OFPPT @
Document
C-A-001.doc
50x
500
501
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
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.
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
OFPPT @
Document
C-A-001.doc
Millsime
dcembre 11
Page 17 - 94
1.14.3.2.
Etape 2
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
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.
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
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.
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
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
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
1.15.2.
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
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
OFPPT @
Document
C-A-001.doc
Millsime
dcembre 11
Page 27 - 94
1.15.3.
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
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
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.
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
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
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
1.16.1.
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
1.16.2.
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.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
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
<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
OFPPT @
Document
C-A-001.doc
Millsime
dcembre 11
Page 36 - 94
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
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.
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.
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.
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
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
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
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
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>
OFPPT @
Document
C-A-001.doc
Millsime
dcembre 11
Page 46 - 94
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
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.
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 .
Si le thme est appliqu sur tout le site, toutes les TextBox auront le mme style Exemple dun contrle spcifique de type TextBox :
<asp:TextBox runat="server" SkinID="specifique" Font-Size="10px" Font-Names="Verdana" ForeColor="red" />
Si le thme est appliqu sur tout le site, toutes les TextBox ayant comme SkinID specifique auront le mme style
OFPPT @
Document
C-A-001.doc
Millsime
dcembre 11
Page 49 - 94
<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
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.
OFPPT @
Document
C-A-001.doc
Millsime
dcembre 11
Page 51 - 94
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
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
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.
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.
OFPPT @
Document
C-A-001.doc
Millsime
dcembre 11
Page 55 - 94
OFPPT @
Document
C-A-001.doc
Millsime
dcembre 11
Page 56 - 94
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
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
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
OFPPT @
Document
C-A-001.doc
Millsime
dcembre 11
Page 58 - 94
Dans cet exemple, les type Cart et Destinataire sont des classes.
OFPPT @
Document
C-A-001.doc
Millsime
dcembre 11
Page 59 - 94
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 <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
Pour rcuprer cette donne, il suffit de la rcuprer dans un Label ou autre contrle avec ce bout de code :
= Profile.age;
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.
OFPPT @
Document
C-A-001.doc
Millsime
dcembre 11
Page 61 - 94
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,
OFPPT @
Document
C-A-001.doc
Millsime
dcembre 11
Page 62 - 94
6.2.
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
<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
OFPPT @
Document
C-A-001.doc
Millsime
dcembre 11
Page 65 - 94
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.
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
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
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>
Bt_Register_Click(object
sender,
OFPPT @
Document
C-A-001.doc
Millsime
dcembre 11
Page 69 - 94
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
6.4.
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
Dans l'exemple ci-dessus, un utilisateur anonyme verrait le contrle Login, alors qu'un utilisateur connect verra "Bonjour [Login]".
6.4.3.
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>
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
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
6.4.7.
ChangePassword
Comme le nom l'indique, cela permet tout simplement de changer son password.
6.5.
OFPPT @
Document
C-A-001.doc
Millsime
dcembre 11
Page 74 - 94
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.
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
6.6.2.
Exemples d'autorisations
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.
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
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
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
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.
OFPPT @
Document
C-A-001.doc
Millsime
dcembre 11
Page 81 - 94
CatalogZone
ConnectionsZone
Toutes ces zones sont contrls par un WebPartManager, unique par page.
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
OFPPT @
Document
C-A-001.doc
Millsime
dcembre 11
Page 83 - 94
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.
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
OFPPT @
Document
C-A-001.doc
Millsime
dcembre 11
Page 85 - 94
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 :
OFPPT @
Document
C-A-001.doc
Millsime
dcembre 11
Page 87 - 94
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.
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 .
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.
LImport Catalog Part comme ci-dessous permet dimporter des WebPart, pour cela il faut spcifier le chemin et la zone.
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
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 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
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