cours asp.net v2011

Upload: miidoo-daif

Post on 20-Jul-2015

113 views

Category:

Documents


0 download

TRANSCRIPT

ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail

Dvelopper des composants serveur

DIRECTION RECHERCHE ET INGENIERIE DE FORMATION SECTEUR NTIC

ROYAUME DU MAROC

Office de la Formation Professionnelle et de la Promotion du Travail

DIRECTION RECHERCHE ET INGENIERIE DE FORMATION SECTEUR NTIC

Dvelopper des composants serveur

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

OFPPT @

DocumentC-A-001.doc

Millsimemars 11

Page 1 - 79

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

OFPPT @

DocumentC-A-001.doc

Millsimemars 11

Page 2 - 79

Dvelopper des composants serveur

OFPPT @

DocumentC-A-001.doc

Millsimemars 11

Page 3 - 79

Dvelopper des composants serveur

1.Introduction ASP.NET 2.01.1. PrincipesL'interaction Client / Serveur est la base principale des applications web. Il est donc trs important de bien comprendre le principe de fonctionnement d'ASP.NET dans l'environnement DotNet avec le serveur IIS. Un petit schma trs simplifi vous aidera peut tre y voir plus clair :

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

1 = vous tapez une url dans votre navigateur et donc, envoyez une requte pour une page aspx d'un client web vers le serveur IIS 2 = la requte est analyse et le traitement est transfr au runtime, un processus est cr pour excuter l'application --> S'il s'agit de la premire excution du code de cette page, le compilateur JIT (Just In Time) compile le code en binaire natif et le stoque en mmoire. --> Si ce n'est pas la premire excution, le code binaire est charg depuis le cache. 3 = ce code binaire est excut puis renvoy vers le serveur IIS 4 = IIS renvoie la rponse sous la forme de code HTML strict vers l'utilisateur. Ce code HTML est affich dans votre navigateur.

OFPPT @

DocumentC-A-001.doc

Millsimemars 11

Page 4 - 79

Dvelopper des composants serveur

1.2.

Environnement de dveloppementUn serveur Web

1.2.1.

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

1.2.2.

Framework 2.0

Si framework .NET n'a pas t install aprs le serveur IIS, vous aurez des problmes d'excution des pages aspx. Pour remdier cet inconvnient postriori, vous pouvez excuter une commande du type : C:\Windows\Microsoft.Net\Framework\v2.0.xx\aspnet_regiis.exe -i ou xx est la version du Framework 2.0 prsente sur votre ordinateur.

1.2.3.

Un EDI, c'est ncessaire ?

Nous avons tous l'habitude de travailler dans un environnement de dveloppement intgr bien que cela ne soit pas toujours ncessaire mais plutt bien pratique. Il en est de mme avec le dveloppement ASP.NET. Vous pouvez, comme pour des applications Winforms, crire du code dans un diteur de texte. Voici, en quelques tapes, la ralisation et l'excution d'une page aspx cre avec le bloc-note :

1.2.3.1.

Etape 1

Crez un site virtuel sur votre IIS et nommez-le, par exemple, "PremierePage". Si vous n'avez jamais ralis cette opration, voici comment procder :a. Allez dans le panneau de contrle de Services Internet (IIS) : Outils

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

OFPPT @

DocumentC-A-001.doc

Millsimemars 11

Page 5 - 79

Dvelopper des composants serveur

OFPPT @

DocumentC-A-001.doc

Millsimemars 11

Page 6 - 79

Dvelopper des composants serveur

Terminer votre cration en laissant les paramtres par dfaut.

1.2.3.2.

Etape 2

Ouvrez le bloc-notes et crez un fichier avec ce code : Bonjour
Nous sommes le .

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

1.2.3.3.

Etape 3

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

OFPPT @

DocumentC-A-001.doc

Millsimemars 11

Page 7 - 79

Dvelopper des composants serveur

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

1.3.

La gestion dEtatPremire page

1.3.1.

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

OFPPT @

DocumentC-A-001.doc

Millsimemars 11

Page 8 - 79

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

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

PropritText Text Text

Contenu"Nom :" "Cliquez" "Bonjour"

BorderWidth 2

OFPPT @

DocumentC-A-001.doc

Millsimemars 11

Page 9 - 79

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

Si vous retournez en mode "source", vous constatez que le code HTML s'est enrichi automatiquement des contrles que vous avez intgrs votre page ainsi que des proprits modifies via la page de proprits. Rien ne vous empche, au fil de l'exprience acquise dans le dveloppement ASP.NET, de taper immdiatement le code de vos contrles dans la page HTML, vous verrez que le "design" se met aussi jour de la mme manire. L'avantage de coder directement dans l'HTML se trouve dans le libre choix que vous avez du type de contrle plac. Par exemple, vous voyez dans notre application que le TextBox1 est considr comme un "asp:textbox" ce qui, niveau excution du code prend plus de place et de temps qu'un simple "asp:inputbox" alors que le rsultat, ici, est exactement le mme. Pour les utilisateurs avertis ayant dj ralis des sites web en HTML, il peut aussi tre plus ais de coder directement dans la page source. A ce point, nous avons des contrles placs sur une page aspx, mais encore aucune action n'est dfinie. Vous avez beau taper un nom dans "TextBox1" et cliquer sur le "Button1", rien ne se passe. En effet, il faut associer un vnement au bouton "Cliquez". Pour ce faire, double-cliquez sur le bouton en mode design et l'environnement de dveloppement va crer une mthode associe l'vnement "Click" du bouton :

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

OFPPT @

DocumentC-A-001.doc

Millsimemars 11

Page 10 - 79

Dvelopper des composants serveur label2.text=label2.text & " " & textbox1.text Vous verrez en cours de frappe que l'aide la compltion existe aussi, exactement comme dans les applications winforms. Maintenant, vous pouvez excuter votre page aspx (F5). Lors d'une premire excution vous allez certainement obtenir ce message :

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

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

1.3.2.

Des vnements particuliers

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

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

1.3.2.1.EvnementApplication_Start

ApplicationDescriptionExcut lors du premier appel une page du site depuis le dmarrage de IIS

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

1.3.2.2.

SessionDescriptionappel 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

EvnementSession_Start

Session_End

Il faut aussi savoir qu'une session peut stocker ses donnes en mode "InProc" (dans le process en mmoire) ou en mode "Sql..." (dans une BD SqlServer) via la base de donnes "AspNetState". Application et Session sont des notions trs importantes en ASP.NET. Elles jouent en effet un rle trs actif au niveau de la vie d'un site et, notamment, au niveau de la prnit des donnes vhicules dans le site lui-mme. Un petit schma pour mieux visualiser la diffrence entre "Application" et "Session" :

Soit trois utilisateurs U1, U2 et U3 qui envoient une requte vers le serveur IIS. Il y aura un seul objet "Application" commun tous les Document Millsime Page OFPPT @ C-A-001.doc mars 11 12 - 79

Dvelopper des composants serveur utilisateurs du site mais trois objets "Session" correspondant chacun un utilisateur prcis. Si U2 quitte son poste de travail sans couper son navigateur :

s'il n'y a pas de timeout, les autres utilisateurs peuvent accder S2 S'il y a timeout et que U2 revient visiter le site, une nouvelle session S4 sera cre .

Par contre, si U2 coupe son navigateur, S2, persiste jusqu' un ventuel timeout ou jusqu' la fin de l'application

1.3.2.3.

PostBack

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

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

1.3.3.

Les Server Controls

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

1.3.4.

ViewState

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

OFPPT @

DocumentC-A-001.doc

Millsimemars 11

Page 13 - 79

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

1.3.5.

Cookies

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

OFPPT @

DocumentC-A-001.doc

Millsimemars 11

Page 14 - 79

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

1.3.6.

Variable de session

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

OFPPT @

DocumentC-A-001.doc

Millsimemars 11

Page 15 - 79

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

1.3.7.

Variable d'application

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

Application("Compteur") = cpt Application.UnLock() lblVisite.Text = "Page vue : " & cpt & " fois." End Sub L'objet Application tant commun tous les utilisateurs du site, il est prfrable de bloquer l'accs lors de l'criture et, bien entendu, de ne pas oublier l'action inverse.

1.3.8.

L'objet Cache

Comme l'objet Application, il conserve aussi des donnes accessibles tous les utilisateurs mais il possde quelques avantages non ngligeables:

Gestion interne de locking Plus rapide Gestion des dpendances

En ce qui concerne les dpendances, on peut en citer quelques-unes trs succinctement car ce genre de programmation demanderait presque un tutoriel elle toute seule !

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

OFPPT @

DocumentC-A-001.doc

Millsimemars 11

Page 16 - 79

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

1.3.9.

Caching (ou cache HTML)

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

Cache de sortie (output cache) : prend un "copie" instantane du flux HTML puis supplante toute action de requte en imposant sa "copie" garde en cache substitution : ce contrle permet de ne pas mettre en cache une partie de la page mme si le cache est activ profils de cache : peuvent tre crs dans le Web.Config et associ par leur nom aux pages qui en ont besoin fragments de cache : fonctionne comme le cache de sortie mais donne la possibilit au programmeur de ne mettre en cache qu'une partie de la page HTML. Le frament caching peut se faire grce aux usercontrols qui disposent eux-mmes d'une directive Output

1.3.10.

QueryString

QueryString permet de faire passer des informations via l'URI d'une page une autre. En reprenant l'exemple d'un ID de socit slectionn dans une page dont les donnes sont prsentes dans une autre page, on aurait trs bien pu indiquer cet ID via l'URI lors de l'appel la deuxime page. Vous avez choisi la socit ayant un ID = 1235, voici comment passer l'identifiant la page suivante : Pour rcuprer l'ID dans la seconde page, il vous suffira de coder comme suit : Vous avez choisi la socit : & Request.QueryString("idsoc") Vous comprenez maintenant le pourquoi de certaines url complexes du genre : http://www.monsite.com/repertoire/liste.asp? id=1257&lng=fr&action=del&[email protected]

OFPPT @

DocumentC-A-001.doc

Millsimemars 11

Page 17 - 79

Dvelopper des composants serveur

1.4.

Contrles utilisateur ASP.NET

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

o

Les contrles utilisateur sont beaucoup plus faciles crer que les contrles personnaliss, dans la mesure o vous pouvez rutiliser des contrles existants. Il est donc particulirement facile de crer des contrles comportant des lments d'interface utilisateur complexes. Cette rubrique fournit une vue d'ensemble de l'utilisation des contrles utilisateur ASP.NET.

1.4.1.

Structure de contrle utilisateur

Un contrle Web ASP.NET ressemble une page ASP.NET complte (fichier .aspx), avec la fois une page d'interface utilisateur et du code. Un contrle utilisateur se cre de faon trs semblable une page ASP.NET. On lui ajoute par la suite le balisage et les contrles enfants ncessaires. Tout comme une page, un contrle utilisateur peut inclure du code servant manipuler son contenu, et notamment effectuer des tches telles que des liaisons de donnes. Un contrle utilisateur prsente les diffrences suivantes par rapport une page Web ASP.NET : L'extension du nom de fichier du contrle utilisateur est .ascx.

Au lieu d'une directive @ Page, le contrle utilisateur contient une directive @ Control qui dfinit la configuration et d'autres proprits.

Les contrles utilisateur ne peuvent pas s'excuter comme des fichiers autonomes. Vous devez au lieu de cela les ajouter des pages ASP.NET, comme vous le feriez pour n'importe quel contrle.

Le contrle utilisateur ne contient pas d'lment html body ou form. Ces lments doivent se trouver dans la page d'hbergement.

Vous pouvez utiliser sur un contrle utilisateur les mmes lments HTML (sauf les lments html, body ou form) et les mmes contrles Web que dans une page Web ASP.NET. Par exemple, si vous crez un contrle utilisateur afin de l'utiliser comme barre d'outils, vous pouvez placer dessus une srie de contrles serveur Web Button et crer des gestionnaires d'vnements pour les boutons.

OFPPT @

DocumentC-A-001.doc

Millsimemars 11

Page 18 - 79

Dvelopper des composants serveur L'exemple suivant montre un contrle utilisateur qui implmente un contrle Spinner dans lequel les utilisateurs peuvent cliquer leur guise sur des boutons pour naviguer dans une srie de choix au sein d'une zone de texte. Protectedcolors As String() = {"Red", "Green", "Blue", "Yellow"} Protected currentColorIndex As Integer = 0 Protected Sub Page_Load(ByVal sender As Object, _ ByVal e As System.EventArgs) If IsPostBack Then currentColorIndex = CInt(ViewState("currentColorIndex")) Else currentColorIndex = 0 DisplayColor() End If End Sub Protected Sub DisplayColor() textColor.Text = colors(currentColorIndex) ViewState("currentColorIndex") = currentColorIndex.ToString() End Sub Protected Sub buttonUp_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) If currentColorIndex = 0 Then currentColorIndex = colors.Length - 1 Else currentColorIndex -= 1 End If DisplayColor() End Sub Protected Sub buttonDown_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) If currentColorIndex = colors.Length - 1 Then currentColorIndex = 0 Else currentColorIndex += 1 End If DisplayColor() End Sub

OFPPT @

DocumentC-A-001.doc

Millsimemars 11

Page 19 - 79

Dvelopper des composants serveur

1.4.2.

Ajout d'un contrle utilisateur une page

Pour utiliser un contrle utilisateur, vous devez l'inclure dans une page 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 @ Registercomprenant :

Un attribut TagPrefix, qui associe un prfixe au contrle utilisateur.

Ce prfixe sera inclus dans la balise d'ouverture de l'lment du contrle utilisateur.

Un attribut TagName, qui associe un nom au contrle utilisateur.

Ce nom sera inclus dans la balise d'ouverture de l'lment du contrle utilisateur.

Un attribut Src, qui dfinit le chemin d'accs virtuel au fichier

contrle utilisateur que vous incluez. 2. Dans le corps de la page Web, dclarez l'lment contrle utilisateur l'intrieur de l'lment form. 3. ventuellement, si le contrle utilisateur expose des proprits publiques, dfinissez-les de faon dclarative.

1.5.

Validation des donnes

La validation des donnes est en gnral la chose la plus importante dans un site web. Ici, nous allons pouvoir travailler ct client et ct serveur, c'est indispensable pour prvenir au plus tt l'utilisateur d'une erreur ventuelle. En effet, il est inutile d'envoyer une demande au serveur si l'information transmise est errone : cela gnre une perte de temps et un encombrement inutile du serveur. La validation ct client est donc celle qui intervient la premire et se fait en gnral en JavaScript. ASP.NET fournit des contrles de validation qui gnrent le code javascript associ, vous vitant de connatre fond le langage et de devoir taper le code.

OFPPT @

DocumentC-A-001.doc

Millsimemars 11

Page 20 - 79

Dvelopper des composants serveur Les principaux contrles de validation sont : RequiredFieldValidator RangeValidator CompareValidator RegularExpressionValidator CustomValidator ValidationSummary Voyons un peu les caractristiques gnrales de chacun.

1.5.1.

RequiredFieldValidator

Le plus frquemment utilis car il est le seul qui peut s'assurer qu'un champ n'est pas vide. En effet, tous les autres contrles de validation acceptent un champ vide donc, associer ce contrle de validation aux autres contrles permet cette vrification essentielle. Le RequiredFieldValidator a donc pour fonction de vrifier qu'un champ a t modifi. Ses proprits principales renseigner sont :

Nom de propritControlToValidate ErrorMessage InitialValue Text

la

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

Exemple de RequiredFieldValidator sur une TextBox nomme TxtNom :

Vous remarquez que pour valider le nom qui est obligatoire, il nous faut 2 contrles RequiredFieldValidator. Un pour signaler que le nom ne peut pas tre un champ vide, l'autre pour interdire l'utilisation du nom "Admin".

OFPPT @

DocumentC-A-001.doc

Millsimemars 11

Page 21 - 79

Dvelopper des composants serveur

1.5.2.

RangeValidator

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

Exemple de validation entre 1 et 10 :