23417901 Cours ASP Net Complet

Embed Size (px)

Citation preview

  • 8/2/2019 23417901 Cours ASP Net Complet

    1/105

    ROYAUME DU MAROC

    Office de la Formation Professionnelle et de la Promotion du Travail

    DIRECTION RECHERCHEET INGENIERIEDE FORMATION

    SECTEUR NTIC

    Dvelopper des composants serveur

  • 8/2/2019 23417901 Cours ASP Net Complet

    2/105

    ROYAUME DU MAROC

    Office de la Formation Professionnelle et de la Promotion du Travail

    DIRECTION RECHERCHEET INGENIERIEDE FORMATION

    SECTEUR NTIC

  • 8/2/2019 23417901 Cours ASP Net Complet

    3/105

  • 8/2/2019 23417901 Cours ASP Net Complet

    4/105

    Dvelopper des composants serveur

    4.3. Les fichiers Skins ............................................................................584.4. Les fichiers CSS ..............................................................................604.5. Application d'un thme ....................................................................634.6. Appliquer un thme global................................................................ 644.7. Dsactiver un thme .......................................................................65

    5. Profiles ...............................................................................................655.1. Introduction aux Profiles ..................................................................655.2. Implmentation des Profiles .............................................................665.3. Description des tables et procdures ..................................................675.4. Mise en place des Profiles .................................................................685.5. Ajouter / Modifier les proprits ........................................................705.6. Les groupes de proprits ................................................................725.7. Conclusion .....................................................................................73

    6. Scurit en ASP.NET 2.0 ........................................................................736.1. Introduction ...................................................................................736.2. Le fichier de configuration: Web.config ...............................................74

    6.3. Utilisation des Memberships et rles ..................................................776.3.1. Installation de la base ................................................................776.3.2. Memberships ............................................................................786.3.3. Rles .......................................................................................80

    6.4. Les contrles de login ......................................................................816.4.1. Login .......................................................................................816.4.2. LoginView .................................................................................816.4.3. PasswordRecovery ....................................................................826.4.4. LoginStatus ..............................................................................826.4.5. LoginName ...............................................................................836.4.6. CreateUserWizard ......................................................................836.4.7. ChangePassword .......................................................................84

    6.5. Les diffrents fournisseurs d'authentification .......................................846.5.1. Forms ......................................................................................856.5.2. Passport ...................................................................................856.5.3. Windows ..................................................................................856.5.4. None ........................................................................................85

    6.6. Appliquer des autorisations ..............................................................856.6.1. Les balises ................................................................................856.6.2. Exemples d'autorisations ............................................................86

    6.7. WSAT - Web Site Administration Tool................................................. 876.7.1. Security ...................................................................................876.7.2. Application ................................................................................886.7.3. Provider ...................................................................................89

    7. Web Parts ............................................................................................907.1. Introduction aux WebParts ...............................................................907.2. Les diffrentes zones de WebParts .....................................................917.3. Cration des WebParts .....................................................................927.4. Formatter des WebParts ...................................................................947.5. Changement de mode ......................................................................957.6. CatalogZone ...................................................................................987.7. EditorZone ...................................................................................1007.8. Conclusion ....................................................................................102

    8. Conclusion .........................................................................................103

    OFPPT @Document Millsime PageC-A-001.doc mars 09 2 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    5/105

    Dvelopper des composants serveur

    OFPPT @Document Millsime PageC-A-001.doc mars 09 3 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    6/105

    Dvelopper des composants serveur

    1.Introduction ASP.NET 2.0

    1.1. Principes

    L'interaction Client / Serveur est la base principale des applications web.Il est donc trs important de bien comprendre le principe defonctionnement d'ASP.NET dans l'environnement DotNet avec le serveurIIS (Internet Information Services).Un petit schma trs simplifi vous aidera peut tre y voir plus clair :

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

    1 = vous tapez une url dans votre navigateur et donc, envoyez unerequte pour une page aspx d'un client web vers le serveur IIS

    2 = la requte est analyse et le traitement est transfr au runtime, unprocessus est cr pour excuter l'application

    --> S'il s'agit de la premire excution du code de cette page, lecompilateur JIT (Just In Time) compile le code en binaire natif et lestoque en mmoire.

    --> Si ce n'est pas la premire excution, le code binaire est chargdepuis le cache.

    3 = ce code binaire est excut puis renvoy vers le serveur IIS 4 = IIS renvoie la rponse sous la forme de code HTML strict vers

    l'utilisateur. Ce code HTML est affich dans votre navigateur.

    OFPPT @Document Millsime PageC-A-001.doc mars 09 4 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    7/105

    Dvelopper des composants serveur

    1.2. Environnement de dveloppement

    1.2.1. Un serveur Web

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

    1.2.2. Framework 2.0

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

    1.2.3. Un EDI, c'est ncessaire ?

    Nous avons tous l'habitude de travailler dans un environnement dedveloppement intgr bien que cela ne soit pas toujours ncessaire

    mais plutt bien pratique. Il en est de mme avec le dveloppementASP.NET. Vous pouvez, comme pour des applications Winforms, criredu code dans un diteur de texte. Voici, en quelques tapes, laralisation et l'excution d'une page aspx cre avec le bloc-note :

    1.2.3.1. Etape 1

    Crez un site virtuel sur votre IIS et nommez-le, par exemple,"PremierePage". Si vous n'avez jamais ralis cette opration, voicicomment procder :

    a. Allez dans le panneau de contrle de Services Internet (IIS) :Outils d'administration dans le panneau de configuration puischoisissez Internet Informations Servicesb. Droulez les options jusqu' trouver Site Web par dfaut et faitesun clic droitc. Choisissez Nouveau -> Rpertoire virtuel ...d. Crez votre rpertoire

    Voici en images et sur XP Pro en anglais les tapes dcrites ci-dessus :

    OFPPT @Document Millsime PageC-A-001.doc mars 09 5 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    8/105

    Dvelopper des composants serveur

    OFPPT @Document Millsime PageC-A-001.doc mars 09 6 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    9/105

    Dvelopper des composants serveur

    Terminer votre cration en laissant les paramtres par dfaut.

    1.2.3.2. Etape 2

    Ouvrez le bloc-notes et crez un fichier avec ce code :

    Bonjour
    Nous sommes le .

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

    1.2.3.3. Etape 3

    Excutez cette page aspx dans votre navigateur en tapant son adressedans la barre de navigation :http://localhost/PremierePage/bonjour.aspx

    et vous devez avoir une page web comme suit :

    OFPPT @Document Millsime PageC-A-001.doc mars 09 7 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    10/105

    Dvelopper des composants serveur

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

    1.2.4. Visual Studio ou Visual Web Developper

    Il est bien vident qu'un EDI digne de ce nom vous offre une multitude

    d'avantages comme la compltion du code, l'initialisation automatiquede vos pages, les contrles utilisateurs, ... malgr que, dans quelquescas, il est parfois plus avantageux de coder directement son contrledans la page HTML plutt que de passer par le Designer de l'EDI.Que vous utilisiez Visual Studio ou Visual Web Developper (EDI gratuitet tlchargeable sur le site de Microsoft France), le dmarrage de votreapplication sera presque le mme. La seule diffrence vient du fait queVisual Studio tant un EDI qui regroupe plusieurs possibilits dedveloppement, vous devrez spcifier que vous dsirez travailler avecun nouveau projet web avant d'arriver sur cette page de configuration :

    OFPPT @Document Millsime PageC-A-001.doc mars 09 8 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    11/105

    Dvelopper des composants serveur

    Il est primordial de bien configurer les informations dans Emplacement(Location) et Langage (Language) ainsi que l'adresse du site que vousdsirez dvelopper sur votre serveur IIS local (localhost).

    Visual Web Developper comporte un serveur "intgr". Si vous necomptez l'utiliser qu'en dveloppement, ce serveur Visual Studio estlargement suffisant.

    1.3. La gestion dEtat

    1.3.1. Premire page

    Enfin ! Un petit exemple en utilisant Visual Studio ou Visual WebDvelopper pour se familiariser avec l'environnement ASP.NET. Si voustes familier avec le "designer" des applications Visual Studio ou VisualExpress Edition, ceci vous paratra trs simple mais on se permet toutde mme de dtailler un peu l'interface pour ceux qui abordent ce thmepour la premire fois.

    OFPPT @Document Millsime PageC-A-001.doc mars 09 9 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    12/105

    Dvelopper des composants serveur

    Reprenons notre EDI et, aprs avoir bien configur les donnes auniveau du serveur et du nom de l'application, l'interface doit maintenantressembler ceci :

    Vous pouvez remarquer que l'interface des applications ASP.NET diffre desapplications Winforms mais nous y retrouvons quand mme pas mal de pointscommuns, notamment :

    l'explorateur de solution contenant notre projet "WebApp", salocalisation "http://localhost/WebApp" et la page par dfaut"Default.aspx", que nous pouvons bien videmment renommer.

    les proprits des contrles et pages grce auxquelles nous allonspouvoir dfinir des comportements graphiques ou autres.la page de code o une partie de codage est gnreautomatiquement par l'environnement de dveloppement.deux boutons "design" et "source" nous permettant de passeraisment d'un mode l'autre dans notre page aspx. Remarquez aussique, si vous dplacez votre curseur dans la partie code, droite dubouton "source", vous apercevez l'endroit exact o se situe le curseurdans l'arborescence des balises HTML.la boite outils, ancre ou non, contenant les contrles utilisablespour votre application web :

    OFPPT @Document Millsime PageC-A-001.doc mars 09 10 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    13/105

    Dvelopper des composants serveur

    Passons maintenant en mode "design". Faites glisser sur la page lescontrles suivant et changez leurs proprits en suivant le tableau ci-aprs :

    Contrle Proprit Contenu

    Un "label" : Label1 Text "Nom :"

    Un "textbox" droite de Label1 : TextBox1 BorderWidth 2

    Un "button" sous Label1 : Button1 Text "Cliquez"

    Un "label" sous le bouton : Label2 Text "Bonjour"

    Remarque : dans la proprit BorderWidth, par dfaut, l'unit de mesureest en "px" (pixel). Cela correspond bien aux normes HTML.

    Votre page doit ressembler ceci :

    OFPPT @Document Millsime PageC-A-001.doc mars 09 11 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    14/105

    Dvelopper des composants serveur

    Si vous retournez en mode "source", vous constatez que le code HTMLs'est enrichi automatiquement des contrles que vous avez intgrs votre page ainsi que des proprits modifies via la page de proprits.Rien ne vous empche, au fil de l'exprience acquise dans ledveloppement ASP.NET, de taper immdiatement le code de vos

    contrles dans la page HTML, vous verrez que le "design" se met aussi jour de la mme manire. L'avantage de coder directement dans l'HTMLse trouve dans le libre choix que vous avez du type de contrle plac.Par exemple, vous voyez dans notre application que le TextBox1 estconsidr comme un "asp:textbox" ce qui, niveau excution du codeprend plus de place et de temps qu'un simple "asp:inputbox" alors quele rsultat, ici, est exactement le mme. Pour les utilisateurs avertisayant dj ralis des sites web en HTML, il peut aussi tre plus ais decoder directement dans la page source.

    A ce point, nous avons des contrles placs sur une page aspx, mais

    encore aucune action n'est dfinie. Vous avez beau taper un nom dans"TextBox1" et cliquer sur le "Button1", rien ne se passe. En effet, il fautassocier un vnement au bouton "Cliquez". Pour ce faire, double-cliquez sur le bouton en mode design et l'environnement dedveloppement va crer une mthode associe l'vnement "Click" dubouton :

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

    label2.text=label2.text & " " & textbox1.text

    Vous verrez en cours de frappe que l'aide la compltion existe aussi,exactement comme dans les applications winforms. Maintenant, vouspouvez excuter votre page aspx (F5). Lors d'une premire excutionvous allez certainement obtenir ce message :

    OFPPT @Document Millsime PageC-A-001.doc mars 09 12 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    15/105

    Dvelopper des composants serveur

    Par dfaut, le dbogage n'est pas activ au niveau des applications web.On vous conseille fortement de l'activer en rpondant OK avec lapremire option coche.

    Ensuite, testez en tapant un nom et en cliquant sur votre bouton.

    1.3.2. Des vnements particuliers

    ASP.NET possde des vnements mais, certains sont assez particulierset trs importants pour le droulement et le contrle de ce genred'application.

    1.3.2.1. Application

    Evnement Description

    Application_StartExcut lors du premier appel une page du sitedepuis le dmarrage de IIS

    Application_EndAppel lorsque l'application se termine, cela nesignifie pas que IIS s'arrte mais est d'office appelsi, pour une raison quelconque IIS est arrt

    1.3.2.2. Session

    Evnement Description

    Session_Startappel lors de chaque nouvelle sessiond'un navigateur client

    Session_End

    fin de session : lors d'un timeout ou lorsd'une destruction explicite(Session.Abandon()) via un lien "LogOut" par exemple

    Il faut aussi savoir qu'une session peut stocker ses donnes en mode"InProc" (dans le process en mmoire) ou en mode "Sql..." (dans uneBD SqlServer) via la base de donnes "AspNetState".

    OFPPT @Document Millsime PageC-A-001.doc mars 09 13 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    16/105

    Dvelopper des composants serveur

    Application et Session sont des notions trs importantes en ASP.NET.Elles jouent en effet un rle trs actif au niveau de la vie d'un site et,notamment, au niveau de la prennit des donnes vhicules dans lesite lui-mme.

    Un petit schma pour mieux visualiser la diffrence entre "Application"et "Session" :

    Soit trois utilisateurs U1, U2 et U3 qui envoient une requte vers leserveur IIS. Il y aura un seul objet "Application" commun tous lesutilisateurs du site mais trois objets "Session" correspondant chacun un utilisateur prcis.

    Si U2 quitte son poste de travail sans couper son navigateur :

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

    S4 sera cre

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

    1.3.2.3. PostBack

    IsPostBack

    Une p age ASP .NET est gnralement u tilise plusieurs fois la suite, dans une sried'changesavec l'utilisateur.

    Supposons qu'une page d'accueil (accuei 1. htm) soit affiche. L'utilisateur cliquesur un lien qui conduit la page saisie.aspx. Comme l'extension de la page est

    OFPPT @Document Millsime PageC-A-001.doc mars 09 14 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    17/105

    Dvelopper des composants serveur

    aspx, celle-ci est traite parASP.NET.Il s'agit alors de la premire fois que la pageest appele.

    Cette page de saisie peut comprendre des contrles qui provoquent un appel auserveur, parexemple des boutons de type asp:Button.

    Quand l'utilisateur clique sur un bouton, la mmepage est appele mais l ce n'est

    pas la premire fois : la page prcdente tait la mme.

    Une proprit de la classe Page indique si la page est appele la premire fois ounon : IsPostBack.

    Si la valeur de cette propritest False. il s'agit du premier appel de la page.

    Si la valeur de IsPostBack est True, la page est appele par elle-mme.

    OFPPT @Document Millsime PageC-A-001.doc mars 09 15 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    18/105

    Dvelopper des composants serveur

    Pour crer une application qui met en vidence la proprit IsPostBack, vouspouvez effectuerles manipulations suivantes :

    o Crez un nouveau projet Application Web ASP.NET.

    o Supprimez la page initiale Default.aspx et ajoutez un nouveau formulaire WebappelSaisie.

    o Ajoutez au projet une page HTML appele accueil.htm.

    o Cliquez droite sur Accuei 1 dans l'explorateur de solutions et slectionnezDfinir commepage de dmarrage dans le menu contextuel.

    o Placez un lien sur la page Accueil dont l'URL de destination est Saisie.aspx

    Dans la page Saisie, placez un contrle Web Form Label appelIblIsPostBack et un contrle Button

    Vous pouvez maintenant ajouter le code suivant dans l'vnementPage_Load de la pageSaisie:

    Private Sub Page_Load(...) Handles MyBase.Load

    If IsPostBack Then

    IblIsPostBack.Text = "IsPostBack est vrai"

    IblIsPostBack.ForeColor = Col or.RedEl se

    IblIsPostBack.Text = "IsPostBack est faux"

    IblIsPostBack.ForeColor = Color.Green

    E n d I f

    E n d S u b

    OFPPT @Document Millsime PageC-A-001.doc mars 09 16 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    19/105

    Dvelopper des composants serveur

    OFPPT @Document Millsime PageC-A-001.doc mars 09 17 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    20/105

    Dvelopper des composants serveur

    1.3.3. Les Server Controls

    Un petit mot sur les types de contrles prsents dans ASP.NET. Il existedeux jeux de contrles s'excutant ct serveur :

    Les Web Controls, grs par des vnements, ils ressemblent plus auxobjets utiliss dans du dveloppement winforms c'est--dire qu'ilspossdent des proprits ("font", "backcolor", ...) facilitant la mise enforme. Ils dpendent de "System.Web.UI.WebControls".Les HTML Controls qui correspondent directement aux balises HTML.Les attributs des balises correspondantes sont accessibles via lesproprits de ces contrles. Pour faire une analogie avec les"WebControls", ceux-ci ne possdent qu'une balise "Style" pour la miseen forme, cela est plutt limitatif.Ces derniers dpendent eux de "System.Web.UI.HtmlControls".

    Gestion de l'tat, lasession, les cookies

    M ise env idence du prob lm e

    S toc ka ge d es do nnes sur le c l ient

    S toc ka ge d es do nnes sur le serveur

    On a vu que chacune des pages effectuait un travail spcifique, les

    seules relations entre une page et une autretant un appel avec unhyperlien.

    La question qui se pose est comment effectuer un traitement surplusieurs pages et particulirement comment retrouver dans le codeassoci une page les donnes d'une autre page.

    le Web est par essence un systmesans tat: l'utilisateur demandeune page, celle-ci est renvoye par le serveur, puis tout est oubli !Lors de la prochaine demande de l'utilisateur, le serveur ne se rappellera de rien. En d'autres termes, le serveur ne fait querpondre des demandes ponctuelles de l'utilisateur,une par une,sans aucune connexion entre elles.

    Pour resoudre de probleme on peut distinguer plusieurs situationset systmes pour grer l'tat, c'est--dire faire passer lavaleur dedonnes d'une page une autre.

    Les quatre premires techniques se servent duclientpour stocker lesdonnes :

    Utiliser le ViewState, l'tat d'affichage des pages Web mis enuvre dans des sacs d'tat(state bags).

    Utiliser des champscachs.

    OFPPT @Document Millsime PageC-A-001.doc mars 09 18 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    21/105

    Dvelopper des composants serveur

    Passer les donnes par

    l'URL.

    Placer les donnes dans des cookies sur le poste de

    l'utilisateur.Les techniques suivantes stockent les donnes sur leserveur:

    Stocker les donnes dans des variables de session.

    Faire de mme avec des variables d'application.

    Utiliser le contexte.

    Placer les donnes dans le cache.

    La gestion de l'tat concerne deux catgories de donnes :

    Les valeurs des variables de l'application, principalement les

    variables de la classe associe la page. Les valeurs des proprits des contrles de la page.

    TRAVEAUX PRATIQUES :

    Mise en vidence du problmePrenons un exemple simple pour montrer comment la gestion

    de l'tat diffre dans les applications Web de ce qu'elle est

    dans les applications classiques.

    La page PageEtat1 prsente un contrle TextBox (txtNom) et

    un bouton OK (btnOK). Quand l'utilisateur clique sur le

    bouton, le contenu de la zone de saisie est recopi dans une

    variable declasse appele Nom (il s 'agit d'un membre de la

    classe associe la page) :

    ' Variable contenant

    le nom Private Nom

    As Stn'ng

    Private Sub btnOK_Click(...)

    Handles btnOK.Click

    Stocke le nom dans un e variableNom = txtNom. Text

    E n d S u b

    OFPPT @Document Millsime PageC-A-001.doc mars 09 19 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    22/105

    Dvelopper des composants serveur

    Un second bouton sur la page (btnAfficheNom) permet d'afficher

    dans un contrle Label(IblNom ) le contenu de la variable Nom

    Private Sub

    btnAfficheNom_Click(...)

    Handles btnAfficheNom .Click

    ' Affiche le contenu de la variable

    IblNom.Text = Nom End Sub

    1.3.4. ViewState

    Prenons un peu le temps de voir le code HTML de la page excute :

    OFPPT @Document Millsime PageC-A-001.doc mars 09 20 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    23/105

    Dvelopper des composants serveur

    Vous constatez que des champs cachs ont t gnrs. Le champnomm_VIEWSTATE .

    Les donnes d'tat de la page

    chaque page est associ un tat d 'affichage (View State), qui stockel'ensemble des donnes de la page et de ses contr les. Cet tatd'aff ichage est implment dans un objet de classe StateBag(littralement, sac d'tat), qui enregistre les donnes sous la forme depaires de cls et de valeurs, dans un dictionnaire.

    NOTE :Pour que l tat d aff ichage soit opra tionnel, i l faut qu e la propri t Enab leview State de lapage soit True.

    Ces donnes sont transportes du serveur une page sur le poste del'utilisateur, puis de celle-|ci au serveur nouveau, dans un cham p cachdu formulaire (un champ de type ). Le contenu de cechamp correspond l'ensemble des valeurs qui se trouventdans l'objetStateBag, codes de tette faon qu'elles soient transportables sur leprotocole HTTPet qu'il ne soit pas facile de les dcoder ou de lesmodifier.

    L'tat d'affichage n'est utilisable que sur la mme page appeleplusieurs fois, pas entre plusieurs pages diffrentes.

    ViewState("Nom") = Value

    pour stocker le contenu de Value sous le nom Nom. On pourra ensuite relire cettedo nne

    On peut accder l'objet StateBag associ une page grce la propritV iewState de l'obje t Page. La c l associe une donne esautomatiquement cre si celle-ci n'existe pas, ou elle est remplace dans l

    OFPPT @Document Millsime PageC-A-001.doc mars 09 21 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    24/105

    Dvelopper des composants serveur

    Nom = ViewState("Nom")

    On peut ainsi transformer la page de l'exemple prcdent afin de stocker le nom,non plus dans un e variable de la classe, mais dans l'objet StateBag de la page.

    on peut rem placer la dclaration de la variable Nom par une proprit de mme nom etqui utilise l'objet StateBag :

    Private Property Nom () As String GetNom = ViewState("Nom")

    E n d G e tSet(ByVal Value As String) ViewState("Nom") = Value

    E n d S e tEnd Property

    Ainsi, le code qui utilise la donne Nom reste le mme :

    Private Sub btnOK_Click(...) Handles btnOK.Click' Stocke le nom dans une variable

    Nom = txtNom.Text

    E n d S u b

    Private Sub btnAfficheNom_C lick(...)Handles btnAfficheNom.Click' Affiche le contenu de la variable

    IblNom.Text = Nom

    E n d S u b

    Avec cette nouvelle version, le nom s'affiche bien quand on clique sur lebouton.

    1.3.5. Cookies

    Stockage des donnes dans des cookiesUn cookie est du texte stock sur le poste du client. Il est gnralement enregistr lademande du serveur, par l'intermdiaire de la proprit Cookies de l'objet HttpResponse

    OFPPT @Document Millsime PageC-A-001.doc mars 09 22 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    25/105

    Dvelopper des composants serveur

    retourn par laproprit Response de la page. Il peut tre lu travers la proprit Cookies del'objet HttpRequest retourn par la proprit Request de la page.

    Pour crire un cookie, qu i est un couple nom-valeur, il suffit de lui donner une valeur, en indiquantson nom comme paramtre de la collection Cookies. Si le cookie existait dj, il est remplac,dans le cas contraire, il est cr :

    I Response.Cookies(''MonCookie").Value = "La valeur"

    Un cookiecrit de cette faon n'est pas permanent : il n'existe qu'en mmoire, donc pendant ladure de l'application. Il disparatra quand celle-ci s'arrtera.

    Pour rendre un cookie permanent, il faut indiquer une date d'expiration. Par exemple :

    Response.Cookies("MonCookie").Value = "La valeur"Respo nse.Coo kies(" Mo nCoo kie").Exp ires =#1/1/2030#

    Le cookie sera alorscrit sur le disque de l'utilisateur et y restera jusqu' la date d'expirationou jusqu' ce qu'il soit effac.

    On peut lire un cookie en utilisant la mme collection Cookies, maie applique l'objetHttpRequest. Voici le code qui relit le cookiecrit prcdemment :

    | MonC ookie = Request.Cookies("MonC ookie"). Value

    Si le cookie existait dans cette application, sa valeur est retourne. Dans le cas con traire, la valeurde retour est une chane de caractres vide.

    L'ensemble des cookies d'une application est transmis avec chaque demande de l'utilisateur. Ilest donc prfrable de ne placer que de petites quantits de donnes dans les cookies, afin de nepas grossir la trame HTTP circulant sur le rseau, d'autant plus que la taille d'un cookie estelle-mme limite.

    La page exemple SaisieNom dispose d'un bouton Affiche avec cookie. Quand l'utilisateurclique dessus, le contenu du champ de saisie est plac dans un cookie temporaireappel

    Nom . L'application est e nsuite redirige vers une autre page, l'aid e d e la mthode Redi -rect del'objet HttpResponse :

    Private Sub btnOKCookie_Click(...) Handles btnOKCookie.ClickResponse.Cookies("Nom").Value = txtNom.Text' Supprimez le commentaire de la ligne suivante pour rendre le cookie permanent'Response.Cookies("Nom").Expires = #1/1/2030*

    Response.Redirect("AfficheNomCookie.aspx")

    E n d S u b

    La page Af fiacheNomCookie affiche le texte lu dans le cookie.

    OFPPT @Document Millsime PageC-A-001.doc mars 09 23 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    26/105

    Dvelopper des composants serveur

    Private Sub Page_L oad(...) Handles MyBase.Load

    IblNom.Text = Request.Cookies("Nom").ValueE n d S u b

    OFPPT @Document Millsime PageC-A-001.doc mars 09 24 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    27/105

    Dvelopper des composants serveur

    Stockage des donn es sur le serveur

    Toutes les techniques prsentes prcdemment stockent les donnes sur le poste du client.Celles de c ette section les placent su r le serveur.

    Cela prsente quelques avantages :

    Les donnes ne sont jamais visibles par le client.

    Elles ne circulent pas sur le rseau et ne l'encombrent donc pas.

    Elles ne sont pas lies au poste utilis par le client, comme c'est le cas pour lescookies(si l'utilisateur utilise un autre poste, il ne dispose pas de ses cookies).

    Leur accs est plus rapide, puisqu'elles se trouvent dj sur le serveur.

    Le stockage des donnes sur le serveur prsentegalement quelques inconvnients :

    Les donnes occupent de la place sur le serveur, ce qui peut deven ir ennuyeux sibeaucoupd'utilisateurs accdent l'application.

    L'utilisateur peuttre li au serveur sur lequel se trouvent les donnes, bienqu'ASP.NET propose des solutions pour cela.

    Les variables d'application

    Une variable d'application est conserve dans un objet particulier, de classeHttpApplication, retourn par la propr it Application de la page.

    Cet objet comprend des donnes lies une application.

    Au fait, qu'est-ce qu'une application Web?

    Il s'agit de l'ensemble des fichiers,pages, gestionnaires, modules et code situs dans unrpertoire virtuel et ses sous-rpertoiressur un serveur Web donn.

    Pour c rer une variable d 'application, il suffit de la nommer et de lui donner une valeur, unpeu comme pour les cookies prsents plus haut :

    | Application("NomVariable") = "Valeur variable"

    Si la variable du nom indiqu existait dj, sa valeur est remplace, sinon elle est cre.

    L'utilisation de variables d'application est donc extrmement simple.

    Il faut cependant fairequelques remarques :

    Une variable d'application est vue par tous les utilisateurs de l'application. Il nefaut doncpas y stocker des donnes spcifiques un utilisateur, mais plutt desdonnes communes toute l'application, par exemple le nom de la soc it ou unetable de taux de TVA ou compter le nombre des utilisateurs connectes.

    Les variables d'application sont stockes dans le serveur Web qu i les cre. Dans le casd'une ferme de serveurs (plusieurs serveurs qui jouent des rles semblables), lademande d'un utilisateur peuttre dirige vers un serveur ou un autre selon leur

    OFPPT @Document Millsime PageC-A-001.doc mars 09 25 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    28/105

    Dvelopper des composants serveur

    charge. Une applica tion peu t donc ne pas d isposer des donnes cres pa r la mmeapplication sur un autreserveur.

    Lors de la modification de la valeur d'une variable d'application, il existe un risque qued'autres utilisateurs effectuent un changement de la mme variable au mme moment.Il convient donc de synchroniser l'accs ces variables, comm e cela est montr dans

    l'exemple suivant.

    On place donc gnralement d ans les variables d'application des donnes en lectureseule. Ces variables sont alors uti lises comme une sorte de cache pour desdonnes qui ne varient pasou peu pendant la dure de vie de l'application.

    Il faut cependant bien initialiser les variables d'application quelque part. Cela peuttre faitquand l'application dmarre, en plaant du code spcifique dans le fichier global.asax del'application qui est ajout un projet Web par Visual Studio .NET lors de sa cration. Cefichier comprend des donnes et du code globaux l'application. On peut notamment yajouter des procdures qui seront appeles par le serveur Internet quand certainsvnements se produiront. Il suff it , pour cela, de driver une classe de la c lasse

    HttpApplication et d'ycrire lesprogrammes ncessaires.Pour grer les variables application, on peutcrire du code dans les procdures suivantes :

    Init et Application_OnStart sont appeles au dmarrage de l'application. On y insredonc gnralement le code d 'initialisation des variables.

    Dispose et Application_OnEnd sont appeles quand l'application se termine.

    Une application dmarre la premire fois qu'un utilisateur appelle une page qui enfait partie. Si le serveurWeb est arrt, elle l'est aussi.D'autre part, si le fichierglobal .asax est modifi, l'application est arr t e puisredmarre.

    On peutremarquer qu'il existedeux proc dures pour le dmarrage et l'arrt del'application.Les constructeurs et destructeurs Init et Dispose sont appels pour chaque objetHttpApplication cr, tandis que les procdures Application_OnStart etApplication_OnEnd sontappeles la premire cration. Il est donc gnralementprfrable d'initialiser les donnes dans le constructeur Init.

    La page AfficheNomApplication affiche une donne place dans une variableApplicationappele Nom par la page appelante, SaisieNom. Celle-ci excute le code suivantlors du clic sur le bouton A ffiche avec application:Private Sub btnOKApplication_Click(...) Handles btnOKApplication.Click

    Application.Lock()

    Application("Nom") = txtNom.Text -

    Application.Unlock()

    Response.Redirect("AfficheNomApplication.aspx")

    E n d S u b

    OFPPT @Document Millsime PageC-A-001.doc mars 09 26 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    29/105

    Dvelopper des composants serveur

    On peut remarquer dans ce code que l'affectation de la valeur la variable Applicationest accompagne d'un appel aux mthodes Lock puis UnLock. Lock verrouille l'objetApplication afin d'viter qu'une modification y soit effectue en mme temps par unautre thread.

    La page AfficheNomAppl i cati on affiche la valeur stocke dans la variableApplication lors de son chargement :

    Private Sub Pag e_Load (...) Hand les MyBase.Load

    ' Do nne initia l ne par la page appelante

    IblNom.Text = Application("Nom")

    ' Donnes initialises dans Global.asax

    IblInit.Text = Application("Init")

    IblOnStart.Text = Application("OnStart")

    E n d S u b

    Vous pouvez remarquer que le code de traitement de l 'vnement Load affichegalement les valeurs de deux autres variables (figure 7-10). Celles-ci ontt initialisesdans des procduresvnement de Global .asax :

    Public Class Global

    Inheri ts System.Web.HttpApplication

    Public Overrides Sub Init()

    Application("Init") = "Donne initialise dans Init"

    End Sub

    Sub Application_OnStart(ByVal sendr As Object, ByVal e As EventArgs)

    Application(OnStart") = "Donne initialise dans A pplication_On Start"

    End Sub

    End Class

    OFPPT @Document Millsime PageC-A-001.doc mars 09 27 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    30/105

    Dvelopper des composants serveur

    Les variables partag es

    L'utilisation de l'objet Application pour conserver des donnes tait courante dansles versionsprcdentes d'ASP. Elle prsente cependant quelques inconvnients,particulirement le fait que les donnes n'y sont pas types, ce qui allonge lestemps de traitement lorsqu'on y accde.

    On pourrait tre tent d'utiliser des variables d'instance de l'objet Application

    (appel Global par dfaut) dclar dansGlobal .asax. Cela n'est cependantpas possible, car il peut exister plusieurs objets Application crs partir de la

    classe Global. Quand une page est appele sur leserveur, ASP.NET peut, soit

    fabriquer un nouvel objet Global, soit utiliser un objet existant. Onne peut donc

    pas avoir de certitude sur l'objet Global employ par une page, et ses variables

    d'instance ne peuvent donc pastre mmorises d 'un appe l l'autre.

    Il est cependant possible de dclarer des variables partages dans la classe Globalavec le m ot-cl Shared. Une telle variable s'utilise indpendamment de la crationd'un objet, elle est doncglobale l'application.

    Voici, par exemple, une variable dclare dan s Glo bal .asax, d ans la classe G lobal

    Public Class GlobalInherits System.W eb.HttpApplication

    Public Shared No m As S tring

    La variable Nom peut alorstre valorise dans une p age, comme dans la page SaisieNom la suite d'un clic sur le bouton Affiche avec variable Shared:

    Private Sub btnOKS hared__C lick(...) Handles btnOK Shared.Click

    SyncLock Me

    Global.Nom = txtNom.Text

    E n d S y n c L o c k

    Response.Redirect("AfficheNomShare.aspx")

    E n d S u b

    Le problme de l 'accs simultan la donne par p lusieurs threads se posenouveau. Il est rgl ici en plaant le code qui accde la d onne da ns une sec tion desynchronisation, ce quigarantit qu'un seul thread peut excuter la section la fois.

    L'utilisation de la donne se fait dans u ne autre page, Af fi cheNom Shared (i l n'est pasncessairede syn chroniser l'accs la d onne en lecture seule:

    Affichage du nom aprs passage par une variable partage

    OFPPT @Document Millsime PageC-A-001.doc mars 09 28 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    31/105

    Dvelopper des composants serveur

    Private Sub Page_Load(...) Handles MyBase.Load

    IblNom.Text = Global.Nom

    E n d S u b

    Les variables de session

    Si les variables d'application sont intressantes pour stocker les

    donnes d'une application, elles ne permettent pas de distinguer unutilisateur d'un autre. Les variables de session rpondent cetteinsuffisance, car elles sont associes l'utilisateur courant.

    La notion de session

    Pour mettre enuvre les variables de session, ASP.NET dfinit unenotion de session qui comprend l'ensemble des actions d'un utilisateurdans une application. Une session est reconnuepar un identificateurde session cr par ASP.NET. Il s'agit d'une chane de caractres de120 bits (par exemple, 302dvbynpstxl3iOrugglb45), dont l'unicit estgarantie grce l'utilisation d 'un a lgorithme spcifique. De plus, la

    structure de cette chane est non trivia le, ce quivite qu'elle soitmanipule l'insu du systme (par exemple, pour se faire passerpour quelqu'und'autre).

    Quand un nouvel util isateur appelle une page d'une applicationASP.NET pour la prem ire fois, un nouvel identificateur lui est attribu.Celui-ci accompagne ensuite toutes les rponses du systme et lesdemandes de l'usager, ce qui permet de l'identifier. Deux techniquespeuventtre utilises pour cela : un cookie particulier enregistr surle poste de l'utilisateur, ou l'inclusion de l'identificateur dans l'URL,essentiellement si les cookies ne sont pas autoriss par lenavigateurde l'utilisateur.

    Pour accder aux informations d'une session, la classe Page exposeune proprit, Session, quiretourne une r frence un objetHttpSessionState. Celui-ci dispose de proprits et de mthodes,dont la proprit SessionID qui renvoie l'identificateur de session

    OFPPT @Document Millsime PageC-A-001.doc mars 09 29 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    32/105

    Dvelopper des composants serveur

    courant. On peutcrire, pour placer l'identificateur de session dans uncontrle label appel IblSessionID :

    | IbISessionID.Text = Session.SessionID

    Le rsultat est une chane de caractres comprenant l'identificateurde session (voir l'exemplesuivant).

    La configuration de la faon dont la session fonctionne

    se fait dans le fichier Web.config, situ dans le rpertoire

    d'une application Web. Il s'agit d 'un fichier XML

    comprenant, entre autres, une balise appele

    sessionState qui fait partie de la section System.web du

    fichier. Cette balise comprend plusieurs attributs qui

    dfinissent les caractristiques de la session

    L e s a t tr ib u t s d e la s e c t io n S y s t e m .w e b d u f ic h i e r d e c o n f ig u r a t io n w e b . c o n f ig

    Voici le contenu de cette cette

    section:

  • 8/2/2019 23417901 Cours ASP Net Complet

    33/105

    Dvelopper des composants serveur

    stateConnectionString="tcpi p=12 7 . 0 . 0 . 1 : 42424"

    sqlConnectionString="datasource=127.0.0.1;user

    id=sa;password="

    cookieless="false"timeout="20"

    />

    Quand l'attribut cookieless a sa valeur par dfaut False, le SessionID esttransmis sur le postede l'utilisateur par l'intermdiaire d'un cookie. En

    revanche, si on donne cookieless la valeurTrue, le SessionID esttransmis dans l'URL, sous la forme d'un pseudo-rpertoire dont le nomest la valeur de l'identificateur.

    OFPPT @Document Millsime PageC-A-001.doc mars 09 31 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    34/105

    Dvelopper des composants serveur

    L'attr ibut mode indique l'emplacement de stockage des

    variables. La modification de la valeur de ce t attribut peut avoir une

    influence sur les performances et sur la disponibilit des donnes

    de session. Les valeurs possibles sont les suivantes :

    Of f, les donnes de session ne sont pas gardes. Les variables de session ne doiventdoncpa s tre utilises s i m od e a cette va leur.

    InProc, les donnes de session sont stockes en mmoire sur le serveur. Cette valeurdonne les meilleures performances (il s'agit d'ailleurs de la valeur par dfaut), mais nepermet pas de conserver les donnes en cas de panne ou d'utilisation de plusieurs ser-veurs ou processus.

    StateServer, les donnes de session sont gardes sur le serveur identifi par la valeurde stateConnectionString. Cette chane doit comprendre l'adresse du serveur suiviedu port utiliser, qui est par dfaut 42424. La valeur par dfaut,

    tcpip=127.0. 0.1:42424, indiqueque les donnes sont stockes sur le serveur local(l'adresse IP 127.0.0.1 identifie le serveur local).

    SQLSe rver, les donnes de session sont stockes sur le serveur SQ L S erver identif i parla valeur de sqlConnectionString. Il s'agit d'une chane de connexion SQL Server.

    Les deux dernires options sont particulirement intressantes et n'existaient pas dans lesversions prcdentes d'ASP. Elles permettent de partager les donnes de session entreplusieursprocessus.

    La valeur StateServer indique que les donnes de la session sont places sur le serveurspcifi par stateConnectionString (un serveur d'tat). On peut alors envisager deuxconfigurations :

    II n'existe qu'un serveur Web, mais plusieurs processus peuvent faire fonctionner lamme application. L'utilisation de cette valeur permet de ne pas lier un utilisateur unprocessusparticulier. La valeur InProc ferait que, si l'utilisateurtait connect unprocessus diffrent d'une page l'autre, les valeurs de ses variables de sessionseraient perdues.

    Quand plusieurs serveurs Web sont utiliss pour la mme application (on parle deferme de serveurs), le serveur d'tat peut tre commun l'ensemble des serveursWeb. De cette faon, les demandes d'un utilisateur ne sont pas lies un serveurphysique particulier et la rpartition de charge entre les serveurs peuttre pleinementexplo ite.

    OFPPT @Document Millsime PageC-A-001.doc mars 09 32 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    35/105

    Dvelopper des composants serveur

    La valeur SQLState de l'attribut mode permet d'aller encore plus loin, puisque lesdonnes des variables d'application sont places sur un serveur SQL Server. Decette faon, mme si unserveur Web tombe en panne, les donnes ne sont pasperdues.

    Le dernier attribut de la balise sessionState, timeout, indique le temps d'inactivit, en

    minutes,aprs lequel la session est ferme. Par dfaut, cette valeur est de vingt minutes.La fermeture d'une session permet de librer toutes les donnes qui lui sont associes. Sil 'application gre des donnes sensibles, comme un compte en banque, i l peut treprfrable de diminuer cette valeur, afin de ne pas garder en mmoire des donnesconcernant un utilisateur qui n'utilise plus l'application. On peut d'ailleurs forcer une fin desession, en appelant la mthode Abandon :

    | S e s s i o n . A b a n d o n

    Cela peut tre effectu, par exemple, en rponse un clic de l'utilisateur sur un bouton dedconnexion plac sur la page. Aprs la fermeture d'une session, automatiquement ou

    manuellement, toutes ses donnes sont dtruites.

    Les variables de session

    Comme les variables d'application, les variables de session sont simplement fabriques enles nommant : si la variable existe, elle est utilise, sinon efle est cre. Pour donner unevaleur la variable de session Nom , on peut simplem ent crire :

    Session('Nom") = "Nouvelle valeur" -

    I II n'est pas ncessaire de mettre en uvre un m canisme de synchronisation pour les variables de session| car elles ne sont norm alement rejointes que par u n seul thread, n'tant lies qu' un seul utilisateur.

    L'initialisation des variables de session peut se faire dans une procdure Session_OnStart (ouSession_Start) et Session_OnEnd permet d'effectuer les traitements de fin de session. Cesdeux procdures doivent tre crites dans le fichier global .asax, comme cela a t expliqudans lasection relative aux variables d'application.

    La page A fficheNomSess ion affiche une variable de session initialise lors de la saisie du nomde l'util isateur dans la page Sai si eNom. Elle affiche galement la valeur d'une variableinitialise dans la procdure Sess ion_OnStart .

    OFPPT @Document Millsime PageC-A-001.doc mars 09 33 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    36/105

  • 8/2/2019 23417901 Cours ASP Net Complet

    37/105

    Dvelopper des composants serveur

    La valorisation de la variable la suite de la saisie du nom est effectue par le code suivantPrivate Sub btnOKSession_Click(...) Handles btnOKSession.ClickSession("Nom") = txtNom.TextRespo nse.Red i rect("AfficheNo mSessi

    on.aspx")E n d S u b

    L'initialisation des variables dans global .asax est :Sub Application_OnStart(ByVal sender As Object, ByVal e As EventArgs)

    Application("OnStart") = "Donne initiaise dans

    Application_OnStart"

    E n d S u b

    Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)Session("Start") = "Donne initialise dansSession_Start" E n d S u b

    Enfin, l'affichage des variables est ralis par le code suivantPrivate Sub Page_Load(...) Handles MyBase.LoadIblNom.Text = Session("Nom")IbISessionID.Text = Session.SessionIDIblSession.Text = Session("Start")IblSessionl.Text = Session("OnStart")E n d S u b

    OFPPT @Document Millsime PageC-A-001.doc mars 09 35 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    38/105

    Dvelopper des composants serveur

    Le contexteLa proprit Context d'une page retourne l'objet HttpContext associ la page. Celui-ci fournitdes informations sur la requte HTTP ayant provoqu son appel. Parmi les membres de la classe

    HttpContext, la proprit Handler donne accs un objet HttpHandler qui reprsente la pagel'origine de l'appel. Cela permet d'accder ses donnes.

    Pour que le contexte permette de rcuprer les donnes de la page prcdente, il faut quel'appel dela page se fasse l'aide de la mthode Server.Transfer et non pasResponse.Redirect.

    |les donnes du co ntexte ne sont valides q ue pou r la requte en cours. Elles sont donc perdues lors de la requtesuivante.

    L'utilisation du contexte peut se faire en castant la proprit Handler en un type correspondant la page appelante. La ligne suivante permet d'accder la proprit Nom dfinie dans lapage

    SaisieNom:

    Private Sub Page_L oa d(... ) Han dles MyB as e.Lo ad

    IblNom.Text = CType(context.Handler, SaisieNom).Nom E n d S u b

    Voici le code de la page SaisieNom

    ' Proprit Nom pour le contexte Public ReadOnlyProperty Nom() As String

    Cet

    Return txtNom.TextEnd Get

    End P roperty

    Private Sub btnOKContext_Click(...) Handles btnOKContext.Click

    'Utilise Server.Transfer au lieu de Response.RedirectServer.Transfer("AfficheNomContext.aspx")

    E n d S u b

    OFPPT @Document Millsime PageC-A-001.doc mars 09 36 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    39/105

    Dvelopper des composants serveur

    L e c a c h e

    Le cache d'ASP.NET est un lieu de stockage de donnes qui peut tre utilis la foispour cacherdes pages, c'est--dire les mmoriser afin d'viter de les rgnrer chaque demande, et pour enregistrer des donnes. Pour le stockage de donnes, lecache ressemble donc l'objet Application dans la mesure o les valeurs qui y sontplaces sont prives l'application. Mais lecachedispose galement de mcanismescomplmentaires qui permettent de contrler la durede vie des donnes qu'ilcontient en librant la mmoire quand elle n'est pas utilise, ou deconditionner lesdonnes des ressources externes.

    Placer des donnes dans le cache se fait trs simplement, comme pour l'objet

    Application :

    Private Sub btnOKCache_Click(...) Handles btnOKCache.ClickCache("Nom") = txtNom.TextResponse.Redirect("AfficheNomCache.aspx")

    E n d S u b

    On peut galement utiliser les mthodes Insert et Add de l'objet Cache pour ajouterdes donnes dans le cache. Ces mthodes peuvent recevoir des paramtrescomplmentaires permettant dedfinir, notamment, la dure de vie des donnes.

    L'obtention des donnes du cache se fait tout aussi simplement (figure 7-14) :

    Private Sub Page_Load(...) Handles MyBase.LoadIblNom.Text = Cache("Nom")

    E n d S u b

    OFPPT @Document Millsime PageC-A-001.doc mars 09 37 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    40/105

    Dvelopper des composants serveur

    RsumNous avons vu que si la gestion de l 'tat est un vritable problme pour lesapplications Web, elle dispose galement de nombreuses solutions. Plusieursmcanismes permettent de stocker les donnes d'une page sur le client, ou sur leserveur. Des techniquesnouvelles dans ASP.NET permettent m me de stocker lesdonnes sur un serveur partag parplusieurs serveurs Web.

    OFPPT @Document Millsime PageC-A-001.doc mars 09 38 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    41/105

    Dvelopper des composants serveur

    1.3.6. Variable de session

    "Session" est un objet qui s'utilise un peu comme le ViewState,c'est--dire avec une cl mais se comporte plutt comme une table de

    hachage. Prenons deux pages aspx :page1.aspx : page dans laquelle nous encodons, par l'intermdiaire d'uneTextBox, un nom de socitpage2.aspx : page dans laquelle nous affichons le nom de la socit(vous comprenez que le but est d'avoir une page d'affichage de donnesde socit se trouvant par exemple dans une base de donnes)

    Protected Sub cmdAfficheSoc (Byval sender As Object, ByVal eAs System.EventArgs) Handles cmdAfficheSoc.Click

    Session("NomSoc") = txtNomSoc.TextResponse.Redirect("page2.aspx")

    End Sub

    Code de la page1.aspx : L'utilisateur introduit un nom de socit dans laTextBox nomme "txtNomSoc". Cette information est sauve en Sessionavant de passer la page2.aspx

    Protected Sub Page_Load (Byval sender As Object, ByVal e AsSystem.EventArgs) Handles Me.LoadIf Session("NomSoc") IsNot Nothing Then

    lblNomSoc.Text = CType(Session("NomSoc"), String)Else

    Response.Write("Aucune socit n'a t choisie !")End IfEnd Sub

    Code de la page2.aspx : Un test est effectu pour savoir si la variable desession contient bien une donne. Celle-ci est affiche en passant par untranstypage.

    Il est vident que cet exemple est trs simpliste et que l'objet Sessionpermet bien d'autres utilisations. Voici quelques points lis l'objetSession (liste non exhaustive) :

    Initialisation de l'objet Session : vnements Session_Start etSession_End dclenchs par le serveur et accessibles via le fichierGlobal.asax Expiration de la session Session avec ou sans cookies Session scurise

    1.3.7. Variable d'application

    OFPPT @Document Millsime PageC-A-001.doc mars 09 39 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    42/105

    Dvelopper des composants serveurLa grande diffrence avec l'objet Session se situe dans le fait qu'un objetApplication conserve des donnes pour l'ensemble des utilisateursd'un mme site web. Il s'utilise de la mme manire que l'objet Session.

    Protected Sub Page_Load (Byval sender As Object, ByVal eAs System.EventArgs) Handles Me.LoadDim cpt As Integer = 0

    Application.Lock()If Application("Compteur") IsNot Nothing Then

    cpt = CType(Application("Compteur"), Integer)End Ifcpt = cpt + 1

    Application("Compteur") = cptApplication.UnLock()lblVisite.Text = "Page vue : " & cpt & " fois."End Sub

    L'objet Application tant commun tous les utilisateurs du site, il est

    prfrable de bloquer l'accs lors de l'criture et, bien entendu, de ne pasoublier l'action inverse.

    1.3.8. L'objet Cache

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

    Gestion interne de locking Plus rapide Gestion des dpendances

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

    Dpendances de temps : permet de faire expirer automatiquementune donne une date/heure absolue

    Dpendances fichiers : le serveur d'application peut mettre jour des donnes lorsque celles-ci sont modifies dans le fichierassoci Dpendances SQL : sous SqlServer 2000 et 2005. Agit de lamme manire avec une base de donnes grce au "poling"(interrogation du serveur vers la BD). le callback : association d'une procdure qui est rappele, nonpas ds que la donne est supprime mais la prochaine excutionde la page qui contient la procdure

    1.3.9. Caching (ou cache HTML)

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

    OFPPT @Document Millsime PageC-A-001.doc mars 09 40 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    43/105

    Dvelopper des composants serveur Cache de sortie (output cache) : prend une "copie" instantane du

    flux HTML puis supplante toute action de requte en imposant sa"copie" garde en cache

    substitution : ce contrle permet de ne pas mettre en cache unepartie de la page mme si le cache est activ

    profils de cache : peuvent tre crs dans le Web.Config et associpar leur nom aux pages qui en ont besoin

    fragments de cache : fonctionne comme le cache de sortie mais donnela possibilit au programmeur de ne mettre en cache qu'une partie dela page HTML. Le frament caching peut se faire grce aux usercontrolsqui disposent eux-mmes d'une directive Output

    1.3.10. QueryString

    QueryString permet de faire passer des informations via l'URI d'une page

    une autre.En reprenant l'exemple d'un ID de socit slectionn dans une pagedont les donnes sont prsentes dans une autre page, on aurait trsbien pu indiquer cet ID via l'URI lors de l'appel la deuxime page.

    Vous avez choisi la socit ayant un ID = 1235, voici comment passerl'identifiant la page suivante :

    Pour rcuprer l'ID dans la seconde page, il vous suffira de coder commesuit :

    Vous avez choisi la socit : &Request.QueryString("idsoc")

    Vous comprenez maintenant le pourquoi de certaines url complexes dugenre :http://www.monsite.com/repertoire/liste.asp?id=1257&lng=fr&action=del&[email protected]

    1.4. Contrles utilisateur ASP.NET

    Il peut arriver que vous ayez besoin dans un contrle de fonctionnalitsdont les contrles serveur Web ASP.NET intgrs ne disposent pas. Vouspouvez alors crer vos propres contrles. Pour ce faire, vous disposez dedeux options : Vous pouvez crer :

    o Des contrles utilisateur. Les contrles utilisateur sont desconteneurs dans lesquels vous pouvez placer des balises et descontrles serveur Web. Vous pouvez ensuite traiter le contrleutilisateur comme une unit et lui assigner des proprits et desmthodes.

    o Des contrles personnaliss. Un contrle personnalis est uneclasse que vous crivez et qui drive de Control ou de WebControl.

    OFPPT @Document Millsime PageC-A-001.doc mars 09 41 - 105

    http://msdn.microsoft.com/fr-fr/library/system.web.ui.control(VS.80).aspxhttp://msdn.microsoft.com/fr-fr/library/system.web.ui.webcontrols.webcontrol(VS.80).aspxhttp://msdn.microsoft.com/fr-fr/library/system.web.ui.webcontrols.webcontrol(VS.80).aspxhttp://msdn.microsoft.com/fr-fr/library/system.web.ui.control(VS.80).aspx
  • 8/2/2019 23417901 Cours ASP Net Complet

    44/105

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

    1.4.1. Structure de contrle utilisateur

    Un contrle Web ASP.NET ressemble une page ASP.NET complte (fichier.aspx), avec la fois une page d'interface utilisateur et du code. Un contrle

    utilisateur se cre de faon trs semblable une page ASP.NET. On lui ajoute parla suite le balisage et les contrles enfants ncessaires. Tout comme une page,un contrle utilisateur peut inclure du code servant manipuler son contenu, etnotamment effectuer des tches telles que des liaisons de donnes.Un contrle utilisateur prsente les diffrences suivantes par rapport une pageWeb ASP.NET :

    L'extension du nom de fichier du contrle utilisateur est .ascx.

    Au lieu d'une directive @ Page, le contrle utilisateur contient une directive

    @ Control qui dfinit la configuration et d'autres proprits.

    Les contrles utilisateur ne peuvent pas s'excuter comme des fichiers

    autonomes. Vous devez au lieu de cela les ajouter des pages ASP.NET,

    comme vous le feriez pour n'importe quel contrle.

    Le contrle utilisateur ne contient pas d'lment htmlbody ou form. Ces

    lments doivent se trouver dans la page d'hbergement.

    Vous pouvez utiliser sur un contrle utilisateur les mmes lments HTML (sauf

    les lments html, body ou form) et les mmes contrles Web que dans une

    page Web ASP.NET. Par exemple, si vous crez un contrle utilisateur afin de

    l'utiliser comme barre d'outils, vous pouvez placer dessus une srie de contrles

    serveur Web Button et crer des gestionnaires d'vnements pour les boutons.

    L'exemple suivant montre un contrle utilisateur qui implmente un contrle

    Spinner dans lequel les utilisateurs peuvent cliquer leur guise sur des boutons

    pour naviguer dans une srie de choix au sein d'une zone de texte.

    OFPPT @Document Millsime PageC-A-001.doc mars 09 42 - 105

    http://msdn.microsoft.com/fr-fr/library/ydy4x04a(VS.80).aspxhttp://msdn.microsoft.com/fr-fr/library/d19c0t4b(VS.80).aspxhttp://msdn.microsoft.com/fr-fr/library/d19c0t4b(VS.80).aspxhttp://msdn.microsoft.com/fr-fr/library/system.web.ui.webcontrols.button(VS.80).aspxhttp://msdn.microsoft.com/fr-fr/library/ydy4x04a(VS.80).aspxhttp://msdn.microsoft.com/fr-fr/library/d19c0t4b(VS.80).aspxhttp://msdn.microsoft.com/fr-fr/library/system.web.ui.webcontrols.button(VS.80).aspx
  • 8/2/2019 23417901 Cours ASP Net Complet

    45/105

  • 8/2/2019 23417901 Cours ASP Net Complet

    46/105

    Dvelopper des composants serveur

    1.4.2. Ajout d'un contrle utilisateur une page

    Pour utiliser un contrle utilisateur, vous devez l'inclure dans une page WebASP.NET. Lorsqu'une demande est soumise concernant une page et que cettepage contient un contrle utilisateur, celui-ci passe par toutes les tapes dutraitement qu'effectuent tous les contrles serveur ASP.NET.

    Pour insrer un contrle utilisateur dans une page Web Forms

    1. Dans la page Web ASP.NET conteneur, crez une directive @ Register

    comprenant :

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

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

    contrle utilisateur.

    Un attribut TagName, qui associe un nom au contrle utilisateur.Ce nom sera inclus dans la balise d'ouverture de l'lment du contrle

    utilisateur.

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

    contrle utilisateur que vous incluez.

    2. Dans le corps de la page Web, dclarez l'lment contrle utilisateur

    l'intrieur de l'lment form.

    3. ventuellement, si le contrle utilisateur expose des proprits publiques,dfinissez-les de faon dclarative.

    1.5. Validation des donnes

    La validation des donnes est en gnral la chose la plus importante dans un siteweb. Ici, nous allons pouvoir travailler ct client et ct serveur, c'estindispensable pour prvenir au plus tt l'utilisateur d'une erreur ventuelle. Eneffet, il est inutile d'envoyer une demande au serveur si l'information transmiseest errone : cela gnre une perte de temps et un encombrement inutile duserveur.

    La validation ct client est donc celle qui intervient la premire et se fait engnral en JavaScript. ASP.NET fournit des contrles de validation qui gnrentle code javascript associ, vous vitant de connatre fond le langage et dedevoir taper le code.

    Les principaux contrles de validation sont :

    RequiredFieldValidator RangeValidator

    OFPPT @Document Millsime PageC-A-001.doc mars 09 44 - 105

    http://msdn.microsoft.com/fr-fr/library/c76dd5k1(VS.80).aspxhttp://msdn.microsoft.com/fr-fr/library/c76dd5k1(VS.80).aspx
  • 8/2/2019 23417901 Cours ASP Net Complet

    47/105

    Dvelopper des composants serveur CompareValidator RegularExpressionValidator CustomValidator ValidationSummary

    Voyons un peu les caractristiques gnrales de chacun.

    1.5.1. RequiredFieldValidator

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

    Nom de laproprit

    Utilisation

    ControlToValidate doit contenir le nom du contrle valider

    ErrorMessagemessage afficher en cas d'erreur dans le contrleValidationSummary

    InitialValuecontient une valeur qui invalide le contrle si celui-ci est gal cette valeur prcise

    Text texte affich en cas de non validation

    Exemple de RequiredFieldValidator sur une TextBox nomme TxtNom :

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

    1.5.2. RangeValidator

    Comme son nom l'indique, il sera utilis pour valider l'encodage entre desbornes donnes. Par exemple, encoder un nombre entre 1 et 10.Les proprits sont pratiquemment identiques celles du contrle

    prcdent :

    OFPPT @Document Millsime PageC-A-001.doc mars 09 45 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    48/105

    Dvelopper des composants serveurNom de la proprit Utilisation

    ControlToValidate doit contenir le nom du contrle valider

    ErrorMessagemessage afficher en cas d'erreur dans lecontrle ValidationSummary

    MinimumValue valeur minimale de la plage de donnes

    MaximumValue valeur maximale de la plage de donnes

    Text texte affich en cas de non validation

    Exemple de validation entre 1 et 10 :

  • 8/2/2019 23417901 Cours ASP Net Complet

    49/105

    Dvelopper des composants serveurproprit ValidationExpression qui correspond videmment l'expressionrgulire de test.Un petit exemple de validation d'un numro de compte bancaire pour en voirl'application :

  • 8/2/2019 23417901 Cours ASP Net Complet

    50/105

    Dvelopper des composants serveur La proprit ClientValidationFunction contient le nom de la fonction La fonction doit tre sous la forme : Function ValidationPersonnelle (source,

    arguments) la source est l'objet CustomValidatorct client arguments est un objet comportant deux proprits : Value et IsValid La proprit Value est la valeur valider La proprit IsValid est un boolen retournant le rsultat de la validation

    La validation ct client s'effectue avec du code javascript soit entre les balisesad hoc, soit dans un fichier ".js" spar.Ce genre de code est bien connu des dveloppeurs javascript :

    function Validation (obj, args){}

    Dans le cas d'une validation ct serveur :Placez le code de validation dans l'vnement OnServerValidate

    1.5.6. ValidationSummary

    Ce contrle n'est pas un contrle de validation proprement parler, ilsert afficher sous diffrentes formes le rsultat de tous les contrles devalidation sur la page aspx si une erreur est survenue. Il est bien videntque vous pouvez l'omettre et grer vous-mme un affichage d'erreur.

    Le contrle ValidationSummarys'affiche ds que la proprit IsValidde lapage est False.Il interroge les diffrents contrles non valides et rcupre la valeur deleur proprit ErrorMessage.Pour afficher le rsultat, vous avez les DisplayMode suivants votredisposition :

    List: simple liste BulletList: liste avec puces SingleParagraph : les messages d'erreur sont concatns les uns la suite

    des autres, spars par une virgule

    L'emplacement de l'affichage peut s'effectuer de deux manires :

    l'emplacement du contrle ValidationSummary: mettre sa propritShowSummary = True

    dans une boite de dialogue : mettre sa proprit ShowDialog = True

    Il est aussi intressant de s'arrter un peu la proprit ValidationGroup

    des contrles utilisateurs. En effet, regrouper certains contrles sous un

    mme nom dans la proprit ValidationGroup permet de valider d'abord

    une srie de champs puis une autre suivant le rsultat de la premire

    validation.

    OFPPT @Document Millsime PageC-A-001.doc mars 09 48 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    51/105

    Dvelopper des composants serveur

    2.Laccs aux donnes avec ASP.NET

    2.1. Introduction

    Les applications Web accdent souvent des sources de donnes aux finsde stockage et de rcupration de donnes dynamiques. Vous pouvez

    crire du code pour accder aux donnes l'aide de classes de l'espace de

    Sy noms System.Data (connu sous le nom ADO.NET) et de l'espace de

    noms stem.Xml. Il s'agissait de l'approche gnralement adopte dans les

    versions antrieures d'ASP.NET.

    Toutefois, ASP.NET permet galement d'excuter la liaison de donnes de

    faon dclarative. Cette liaison n'exige aucun code pour les scnarios dedonnes les plus courants, et notamment :

    la slection et l'affichage de donnes ;

    le tri, la pagination et la mise en cache de donnes ;

    la mise jour, l'insertion et la suppression de donnes ;

    le filtrage de donnes l'aide de paramtres d'excution ;

    la cration de scnarios matre/dtails l'aide de paramtres.

    ASP.NET inclut deux types de contrles serveur qui interviennent dans le

    modle de liaison de donnes dclaratif : les contrles de source de

    donnes et les contrles lis aux donnes. Ces contrles grent les tches

    sous-jacentes exiges par le modle Web sans tat pour l'affichage et la

    mise jour des donnes dans les pages Web ASP.NET. En consquence,

    vous n'tes pas tenu de connatre tout le droulement du cycle de vie des

    demandes de page pour excuter la liaison de donnes.

    2.2. Contrles de source de donnes

    Les contrles de source de donnes sont des contrles ASP.NET qui grent

    les tches de connexion une source de donnes et de lecture et

    d'criture de donnes. Les contrles de source de donnes ne gnrent

    pas le rendu d'une interface utilisateur. Au lieu de cela, ils jouent le rle

    d'intermdiaires entre un magasin de donnes particulier (base de

    donnes, objet mtier ou fichier XML) et d'autres contrles de la page WebASP.NET. Les contrles de source de donnes offrent des fonctionnalits

    OFPPT @Document Millsime PageC-A-001.doc mars 09 49 - 105

    http://msdn2.microsoft.com/fr-fr/library/system.xml(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.data(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.xml(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.data(VS.80).aspx
  • 8/2/2019 23417901 Cours ASP Net Complet

    52/105

    Dvelopper des composants serveurpuissantes de rcupration et de modification de donnes, et notamment

    en termes de requtes, de tri, de pagination, de filtrage, de mise jour,

    de suppression et d'insertion. ASP.NET comprend les contrles de source

    de donnes suivants :

    Contrle de source dedonnes Description

    ObjectDataSource Permet d'utiliser un objet mtier ou une autre classeet de crer des applications Web qui s'appuient surdes objets de couche intermdiaire pour grer desdonnes.

    SqlDataSource Permet d'utiliser les fournisseurs de donnesmanags ADO.NET, lesquels offrent un accs auxbases de donnes Microsoft SQL Server, OLE DB,

    ODBC ou Oracle.

    AccessDataSource Permet d'utiliser une base de donnes MicrosoftAccess.

    XmlDataSource Permet d'utiliser un fichier XML, ce qui est trs utilepour les contrles serveur ASP.NET hirarchiquestels que les contrles TreeView ou Menu.

    SiteMapDataSource Utilis avec la navigation de site ASP.NET.

    Les contrles de source de donnes peuvent galement tre tendus pour

    prendre en charge d'autres fournisseurs d'accs au stockage des donnes.

    2.3. Contrles lis aux donnes

    Les contrles lis aux donnes gnrent le rendu des donnes en tant que

    balises au navigateur qui envoie la demande. Un contrle li aux donnes

    peut se lier un contrle de source de donnes et extraire

    automatiquement des donnes au moment opportun dans le cycle de vie

    de la demande de page. Les contrles lis aux donnes peuvent tirer partides fonctionnalits fournies par un contrle de source de donnes, et

    notamment le tri, la pagination, la mise en cache, le filtrage, la mise

    jour, la suppression et l'insertion. Un contrle li aux donnes se connecte

    un contrle de source de donnes via sa proprit DataSourceID.

    ASP.NET comprend les contrles lis aux donnes dcrits dans le tableau

    suivant.

    OFPPT @Document Millsime PageC-A-001.doc mars 09 50 - 105

    http://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.objectdatasource(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.sqldatasource(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.accessdatasource(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.xmldatasource(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.treeview(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.menu(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.sitemapdatasource(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.basedataboundcontrol.datasourceid(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.objectdatasource(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.sqldatasource(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.accessdatasource(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.xmldatasource(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.treeview(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.menu(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.sitemapdatasource(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.basedataboundcontrol.datasourceid(VS.80).aspx
  • 8/2/2019 23417901 Cours ASP Net Complet

    53/105

    Dvelopper des composants serveur

    Contrles de liste

    Gnre le rendu des donnes dans divers formats de liste. Les contrles de type liste

    incluent les contrles BulletedList, CheckBoxList,DropDownList,ListBoxet

    RadioButtonList.

    Contrle fonctionnementAdRotator Gnre le rendu des annonces dans une page en tant

    qu'images sur lesquelles les utilisateurs peuvent cliquer

    pour accder une URL associe l'annonce.

    Datalist Gnre le rendu des donnes dans une table. Le rendu de

    chaque lment est gnr l'aide d'un modle d'lment

    que vous dfinissez.

    DetailsView Affiche un seul enregistrement la fois sous une forme

    tabulaire et permet de modifier, de supprimer et d'insrer

    des enregistrements. Vous pouvez galement parcourir

    plusieurs enregistrements.

    OFPPT @Document Millsime PageC-A-001.doc mars 09 51 - 105

    http://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.bulletedlist(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.checkboxlist(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.checkboxlist(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.dropdownlist(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.dropdownlist(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.listbox(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.listbox(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.radiobuttonlist(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.adrotator(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.detailsview(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.bulletedlist(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.checkboxlist(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.dropdownlist(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.listbox(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.radiobuttonlist(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.adrotator(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.detailsview(VS.80).aspx
  • 8/2/2019 23417901 Cours ASP Net Complet

    54/105

    Dvelopper des composants serveurFormView Semblable au contrle DetailsView, mais permet de dfinir

    une prsentation de formulaire libre pour chaque

    enregistrement. Le contrle FormView ressemble au

    contrle DataList pour un enregistrement unique.

    GridView Affiche des donnes dans un tableau et propose une

    assistance pour l'dition, la mise jour, le tri et lapagination des donnes sans ncessiter de code.

    Menu Gnre le rendu des donnes dans un menu dynamique

    hirarchique qui peut inclure des sous-menus.Repeater Gnre le rendu des donnes dans une liste. Le rendu de

    chaque lment est gnr l'aide d'un modle d'lment

    que vous dfinissez.TreeView Gnre le rendu des donnes dans une arborescence

    hirarchique de nuds qu'il est possible de dvelopper.

    3.Master Page

    3.1. Introduction aux MasterPages

    Depuis longtemps, les dveloppeurs ont toujours t contraint dedupliquer les sources HTML du design sur chaque page. Dautre solutionintermdiaire existait, par exemple lutilisation des frames en HTML,cependant cette fonction appartient au langage HTML et prsentebeaucoup de problme, notamment au niveau des emplacements, de plusles frames sont de moins en moins utilises de nos jours. La fonctionnalit

    MasterPage a longtemps t demande par les dveloppeurs, ellenexistait toujours pas dans les versions prcdentes de lASP.NET, grceau MasterPage vous allez enfin pouvoir sparer les sources du design aucode pur. En effet, intgr la version 2.0, vous pouvez sparer la partiedveloppement du design et dveloppement fonctionnel du site, vousnavez plus besoin de dployer les sources du design sur chaque page dusite.

    La MasterPage (extension *.master) contiendra la source (X)HTML dudesign et des zones ddition (contentPlaceHolder), permettant ainsi decrer plusieurs page (contentPage) du mme design. Il suffit ensuite de

    modifier les zones dditions sur chaque page. Par exemple, si lonconsidre que le site de SUPINFO (www.supinfo.com) est en ASP.NET 2.0,

    OFPPT @Document Millsime PageC-A-001.doc mars 09 52 - 105

    http://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.formview(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.gridview(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.repeater(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.formview(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.gridview(VS.80).aspxhttp://msdn2.microsoft.com/fr-fr/library/system.web.ui.webcontrols.repeater(VS.80).aspx
  • 8/2/2019 23417901 Cours ASP Net Complet

    55/105

    Dvelopper des composants serveurune MasterPage est suffisante pour le design, ensuite chaque page feraappel cette MasterPage dans len-tte, et chaque page devra insrerleurs informations spcifiques dans les zones dditions imposer dans laMasterPage

    3.2. Cration d'une MasterPage

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

    Fig 1.1 Crer un nouvel item

    Une fentre apparatra, il vous suffira de choisir MasterPage et derenommer, si vous le souhaitez, le nom de la MasterPage.

    Fig 1.2 Crer un item MasterPage

    Vous remarquerez que len-tte de la MasterPage contient le mot-cl Master , la diffrence dune page simple qui contient le mot-cl Page.

    OFPPT @Document Millsime PageC-A-001.doc mars 09 53 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    56/105

    Dvelopper des composants serveur

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

    Voici un exemple simple de design avec 3 contentPlaceHolder :

    Test body { font-size:14px; font-family:verdana; font-weight:bold; text-align:center;

    }

    OFPPT @Document Millsime PageC-A-001.doc mars 09 54 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    57/105

    Dvelopper des composants serveur

    Fig 1.3 Exemple d'une MasterPage

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

    3.3. Mise en place d'une MasterPagePour appliquer une MasterPage sur une nouvelle page, il faut tout dabordenlever toute la source HTML qui vous ne sera pas utile, laisseruniquement len-tte :

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

    OFPPT @Document Millsime PageC-A-001.doc mars 09 55 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    58/105

    Dvelopper des composants serveur

    Enfin, il suffit de rajouter des balises contentPlaceHolder avec lID duncontentPlaceHolder de la MasterPage, en voici un exemple :

    TOP: HELLO, HOW ARE YOU?BOTTOM LEFT: SUPINFOBOTTOM RIGHT: 2005-2006

    Voici le rsultat de notre exemple :

    Fig 1.4 Exemple d'une page avec MasterPage

    Les IDs des contentPlaceHolder sont uniques et laffichage des IDsdisponiblent lors de lauto-compltion correspondent aux IDs descontentPlaceHolder de la MasterPage appelle.

    3.4. Conclusion

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

    OFPPT @Document Millsime PageC-A-001.doc mars 09 56 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    59/105

    Dvelopper des composants serveurdupliquer le code source du design sur chaque page. Il est bien entendupossible de crer des MasterPage dynamiquement dans le code-behind, decrer dimbriquer des MasterPage.

    4.Thmes ( apparences(Skins) et feuilles Css)

    4.1. Introduction aux thmes

    Les MasterPages facilitant la mise en place et la duplication du design surtoutes les pages dune application WEB.

    Il manque cependant le formatage du site :

    les couleurs les polices la taille des tableaux la taille des diffrents composants etc.

    Cest l quinterviennent les thmes, plus exactement la mise en place dun

    style sur un site.Avant ce sont des CSS (Cascading Style Sheet),mais ils ne permettent pasle formatage des contrles ASP.NET.

    4.2. Cration d'un thme

    Les thmes sont stocks obligatoirement dans le dossier App_Themes(crer)compos au minimum dun fichier Skin (*.skin),sinon de plusieursfichier skin et Css.(bouton droit sur le projet /Ajouter le dossierASP.NET/Thmes)

    Ajouter ensuite un nouveau fichier Skin ou CSS votre thme, il suffittout simplement de faire un clique-droit sur le thme et Add New Item .

    OFPPT @Document Millsime PageC-A-001.doc mars 09 57 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    60/105

    Dvelopper des composants serveur

    4.3. Les fichiers Skins

    Les fichiers Skins sont composs essentiellement de contrle ASP.NET

    avec leurs proprits de formatage (police, couleur, taille).Vous avez la possibilit dajouter :

    des contrles communs (sans SkinID) des contrles spcifiques (avec SkinID).

    Si le thme est appliqu :

    les contrles communs sappliqueront tous les contrles dumme type.

    les contrles spcifiques seront appliqus tous les contrles dumme type et ayant le mme SkinID.

    Exemple dun contrle commun de type TextBox :

    Si le thme est appliqu sur tout le site, toutes les TextBox auront lemme style.

    Exemple dun contrle spcifique de type TextBox :

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

    Pour crer une apparence, une mthode facile consiste ajouter lecontrle une page et le configurer comme il vous convient. Parexemple, vous pouvez ajouter un contrle Calendar une page et dfinirson en-tte des jours, la date slectionne et d'autres proprits.Ensuite, vous pouvez copier la dfinition du contrle de la page en modesource dans un fichier .skin, mais vous devez supprimer l'attribut ID.

    OFPPT @Document Millsime PageC-A-001.doc mars 09 58 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    61/105

    Dvelopper des composants serveurVoici un exemple de fichier Skin non exhaustif :

  • 8/2/2019 23417901 Cours ASP Net Complet

    62/105

    Dvelopper des composants serveur font-name="Verdana" Font-Size="10pt" borderWidth="1px" BorderColor="#CCCCCC" BackColor="#FFFBFF"/>

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

    4.4. Les fichiers CSS

    Pour crer une feuille de style click droit sur le dossierApp_themes/Theme1 ,ajouter un nouvel element choisir feuille de styledonner un nom la feuille de style.

    La feuille est vide pour ajouter des elememts et des classes destyle,double click sur la feuille.

    Un menu structure Css apparat a gauche :

    OFPPT @Document Millsime PageC-A-001.doc mars 09 60 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    63/105

    Dvelopper des composants serveur

    Click droit sur Elements ,Ajouter une regle de style :

    Choisir lelement pour lequel on veut crer un style :

    OFPPT @Document Millsime PageC-A-001.doc mars 09 61 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    64/105

    Dvelopper des composants serveur

    OFPPT @Document Millsime PageC-A-001.doc mars 09 62 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    65/105

    Dvelopper des composants serveur

    Faire la mme chose pour ajouter une classe.

    4.5. Application d'un thme

    Un style peut tre directement appliqu au contrle ASP.NET en modifiantdirectement les proprits dun contrle. Bien entendu, lintrt desThmes est de pouvoir stocker diffrents thmes et pouvoir lesappliquer plusieurs fois sans avoir redfinir le thme.

    Voici les principaux proprits de style des contrles :

    Proprits Type DescriptionBackColor Texte Couleur de larrire planBorderColor Texte Couleur de la bordureBorderStyle Texte Style de la bordureBorderWidth Pixels Largeur de la bordure

    Font-Bold Booleen Caractre en grasFont-Italic Booleen Caractre en italiqueFont-Name Texte Police

    Font-Overline Booleen Caractre surlignFont-Size Pixels Taille des caractres

    Font-Strikeout Booleen Caractre barr

    Font-Underline Booleen Caractre souglin

    OFPPT @Document Millsime PageC-A-001.doc mars 09 63 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    66/105

    Dvelopper des composants serveurForeColor Texte Couleur des caractres

    Height Pixels Hauteur du contrleVisible Booleen Visibilit du contrleWidth Pixels Largeur du contrle

    Pour appliqer un thme automatiquement, il suffit de spcifier le nom duthme dans len-tte de la page.

    Enfin, il faudra spcifier dans chaque contrle le SkinID si vous souhaitezappliquer des styles spcifiques ayant un SkinID.

    Sans thme Avec thme

    4.6. Appliquer un thme global

    Pour appliquer un thme tout le site, pour viter dappliquer le thmepage par page, il faut dfinir le thme appliquer dans le fichier deconfiguration (Web.config) entre les balises system.web , en voici unexemple :

    OFPPT @Document Millsime PageC-A-001.doc mars 09 64 - 105

  • 8/2/2019 23417901 Cours ASP Net Complet

    67/105

    Dvelopper des composants serveur

    Dans ce cas, vous naurez pas spcifier la proprit Theme surchaque en-tte de chaque page. Par contre si votre thme contient descon