Académique Documents
Professionnel Documents
Culture Documents
NETAjax
Version1.0
JamesRAVAILLE
http://blogs.dotnetfrance.com/jamesr
LesbasesfondamentalesdeMicrosoftASP.NETAjaxv1.007/01/2009
Sommaire
1 Introduction.....................................................................................................................................4 1.1 1.2 1.3 2 Prsentation............................................................................................................................ 4 RappelssurlatechnologieASP.NET....................................................................................... 4 Utilit.......................................................................................................................................4
MicrosoftAjaxLibrary:lesextensionsJavaScript........................................................................... 9 4.1 4.2 4.3 4.4 4.5 Prsentation............................................................................................................................ 9 Lestypesdehautniveau......................................................................................................... 9 Lalias$get............................................................................................................................. 10 Lesextensionsorientesobjet.............................................................................................. 10 Exemplesdutilisationdecesextensions.............................................................................. 10 Exempledecrationduneclasse................................................................................. 10
4.5.1 5 6
6.4.1
LesbasesfondamentalesdeMicrosoftASP.NETAjaxv1.007/01/2009 6.4.2 6.4.3 6.4.4 6.4.5 6.5 Proprits...................................................................................................................... 21 AssociationduncontrleUpdateProgressunouplusieurscontrlesUpdatePanel .22 Dfinitionducontenu .................................................................................................... 22 Miseenuvre ............................................................................................................... 22
Conclusion.....................................................................................................................................25
DotnetFranceAssociationJamesRAVAILLE
LesbasesfondamentalesdeMicrosoftASP.NETAjaxv1.007/01/2009
1 Introduction
1.1 Prsentation
Ce chapitre sadresse des personnes, matrisant la conception et le dveloppement dapplications Web, avec la technologie ASP .NET. Aussi, il met laccent sur le Framework Ajax ct serveur.Lectclientseraaborddansunautrechapitre.
1.2 RappelssurlatechnologieASP.NET
La technologie ASP .NET est une technologie propose par Microsoft, permettant de dvelopper des applications Web. En 2005, Microsoft a propos la technologie ASP .NET 2.0, qui a apportdimportantesavancesparrapportauxversionsprcdentes: DanslaconceptiondesprojetsWeb:crationduneapplicationWeboudunsiteWeb Dans le dveloppement: les pages matres, gestion de ltat des donnes, propositions de services dapplication (gestion de la scurit, de la navigation, des dpendances de cache verslesbasesdedonnes,degestiondesprofilsutilisateurs). DenouveauxcontrlesASP.NET. Dans le dploiementvia Visual Studio : copie et synchronisation via loutil de copie de sites Web, et la publication avec la possibilit de compiler partiellement ou quasicompltement lessourcesdelapplication
Cependant, dimportants flux de donnes naviguent entre les serveurs et les clients Web, et les performances ct client restent limites (nativement, pas denvoi de requte HTTP en mode asynchrone), et la conception de contrles utilisateurs sophistiques est aise Cest pourquoi, MicrosoftproposeuneimplmentationdesconceptsdAjax(AsynchronousJavaScriptAndXML): Sousformedextensionsdepuislaversion2.0duFramework.NET. IntgredansleFramework.NETdepuislaversion3.5.
1.3 Utilit
MicrosoftASP.NETAjaxpeuttreutilisdesfinsdiverses: Validationetmisejourdunepartiedunepage Aidelasaisie(listes) LecturedefluxRSS Tri,filtrageetrorganisationdedonnesctclient Applicationsdegestiondedocuments Chargementprogressifdedonnesvolumineuses Consommationdeservicesdistants
DotnetFranceAssociationJamesRAVAILLE
LesbasesfondamentalesdeMicrosoftASP.NETAjaxv1.007/01/2009
2 LesbasesfondamentalesdASP.NETAjax
2.1 Echangesclient/serveuravecASP.NET(classiques)
DansuneapplicationASP.NETclassique,unclientWebenvoiedesrequtesHTTPauserveur Web.Chacunedesrequtesestexcutedemaniresynchrone.Voiciunexempledescnario: Leclientenvoieunepremirerequteauserveur,etpatiente. Le serveur traite cette requte, excute la page ASP .NET vise, et renvoie le rsultat de lexcutionauclient. Le client clique par exemple sur un bouton, une nouvelle requte est alors envoye au serveurWeb.Ilpatientedenouveau,pendantqueleserveurtraitesarequte. Une fois la rponse obtenue, le client voit dans son navigateur le rsultat de lexcution, et peutdenouveauenvoyunenouvellerequte. Voiciunschmaexplicitantcescnario:
Serveur Web
Excution de la page
Requte HTTP POST Rponse HTTP Application Web Requte HTTP POST Rponse HTTP Excution dune partie de la page Excution dune partie de la page
Page Web
2.2 Echangesclient/serveuravecASP.NETAjax
Avec ASP .NET Ajax, le client pourra envoyer des requtes HTTP, qui mettront jour une ou plusieurs parties dune mme page. Ces requtes pourront sexcuter de manire asynchrone (en mmetemps). DotnetFranceAssociationJamesRAVAILLE
LesbasesfondamentalesdeMicrosoftASP.NETAjaxv1.007/01/2009
2.3 Formatdchangededonnes
Actuellement (en 2009), le langage dchanges de donnes standard interapplicatif est le langage XML. Cependant, dans ASP .NET Ajax, ce langage pose des problmes en matire de performance: Le langage XML est un langage verbeux (balises douverture et de fermeture, rptition dlments,).Lesdonneschangesentreleclientetleserveursontdoncvolumineuses. Un flux XML nest pas interprt nativement par le langage JavaScript. Ainsi, pour accder auxdonnesduflux,ilestncessairedeparsercefluxetcrerunarbreDOM.
Fort de ces constats, dans ASP .NET Ajax, les changes de donnes (par dfaut, car il est possibledemodifiercecomportement)sefontaveclelangageJSON(JavaScriptObjectNotation).Ce langage permet dcrire des flux moins volumineux, et est nativement interprt par le langage JavaScript.Pourvousmontrerladiffrenceentrecesdeuxlangages,voicideuxfluxdedonnes:
' Flux de donnes au format XML
Sivoussouhaitezensavoirplussurcelangage,vouspouvezconsulterlesiteofficieldeJSON, quipubliesesspcifications:www.json.org
DotnetFranceAssociationJamesRAVAILLE
LesbasesfondamentalesdeMicrosoftASP.NETAjaxv1.007/01/2009
3 PrsentationdASP.NETAjax
3.1 Vuedensemble
Ajax nest pas une technologie propre Microsoft, qui en propose toutefois une implmentation, afin dtendre sa technologie permettant de dvelopper des applications Web, la technologieASP.NET: Microsoft ASP .NET AJAX Library : framework JavaScript (nouveaux lments de syntaxe, bibliothquedeclassescomplmentaire) Microsoft ASP .NET AJAX Extensions, prsents sous la forme de nouveaux contrles serveur ASP.NET,etclassesassocies Microsoft ASP .NET AJAX Control Toolkit: un ensemble de contrles Web enrichis (widgets). Ces contrles ne sont pas abords dans ce cours. Si vous souhaitez en savoir plus, vous pouvezlirelechapitreAjaxControlToolkit
La philosophie de Microsoft ASP .NET Ajax, telle quelle est prsente par Microsoft, est trs oriente serveur: dans la continuit de la technologie ASP.NET, elle propose une implmentation base sur des composants serveurs. Toutefois, cette implmentation est extensible, en nous laissant lapossibilitdecrernosproprescomposants.
3.2 MicrosoftASP.NETAjax:ctserveur
VoiciunschmaprsentantlesfonctionnalitsprisesenchargeparleFramework.NET,ct serveur:
Cescomposantspermettent: DeconfigurerlecodeJavaScriptgnrdanslapage: Localisation / globalisation, de manire internationaliser / personnaliserlestextesetformatsdedonnes Dbogageettraage De crer des services Web Ajax, des services WCF et des mthodes depageconsommablesdansleblocJavaScriptdespagesASP.NET De configurer et utiliser les services dapplication ASP .NET (gestion de lauthentification des utilisateurs, des autorisations sur les ressourcesdelapplicationetgestionduprofiledesutilisateurs) De crer des contrles serveur personnaliss, qui dfinissent un comportementctclient(extenders)
3.3 MicrosoftASP.NETAjax:ctclient
VoiciunschmaprsentantlesfonctionnalitsprisesenchargeparleFramework.NET,ct serveur: DotnetFranceAssociationJamesRAVAILLE
LesbasesfondamentalesdeMicrosoftASP.NETAjaxv1.007/01/2009
DotnetFranceAssociationJamesRAVAILLE
LesbasesfondamentalesdeMicrosoftASP.NETAjaxv1.007/01/2009
4 MicrosoftAjaxLibrary:lesextensionsJavaScript
Ce sujet est trop vaste pour pouvoir le traiter dans ce support de cours. Nous nous attacheronsainsivousprsenterenquoiconsistelesextensionsJavaScript.
4.1 Prsentation
Microsoft Ajax Library contient des fichiers dextension .js, tlchargs sur le navigateur client la demande, autrement dit suivant les fonctionnalits utiliss dans la page affiche. Tous ces fichiers de base sont contenus en tant que ressources incorpore dans lassembly System.Web.Extensions.dllduFramework.NET. LesextensionsJavaScriptenrichissentlelangageJavaScriptdebase,toutenproposantdes: Objets, instructions et concepts de plus haut niveau, tels que des notions objet (classes, hritage,interfaces,numrations). Reconnaissancedetypedunobjet. Descapacitsdemiseenuvredelarflexion. Autrement dit, Microsoft Ajax Library contient une importante couche dabstraction sur le langageJavaScript,afin: Il est important de noter que Microsoft Ajax Library, fonctionne dans la plupart des navigateurs, couramment utiliss par les internautes (Internet Explorer, FireFox, Google Chrome, Opera,) Deproposerdestypesdehautniveau,enrichissantlestypesnatifsdulangageJavaScript. Dimplmenterdanscelangage,desconceptsorientsobjet. Deproposerdenouvellesclassesetobjetsoffrantdavantagesdefonctionnalits.
4.2 Lestypesdehautniveau
LestypesdehautniveaufournisparleFrameworkJavaScriptsontlessuivants: Array : tant le type Array natif, afin de pouvoir facilement numrer et rechercher les lmentsdansuntableau Boolean : tant le type Boolean natif, afin de pouvoir dduire une valeur boolenne partir dunechanedecaractres Date : tend le type Date natif, notamment avec la prise en compte du formatage de donnes Error:permetdesimuleruneexception Function:tendletypeFunctionnatif,afindeproposerdesmthodespermettantdedfinir desclasses,espacesdenoms Number:tendletypeNumbernatif DotnetFranceAssociationJamesRAVAILLE
10
LesbasesfondamentalesdeMicrosoftASP.NETAjaxv1.007/01/2009 Object:tendletypeObjectnatif RegExp:encapsuleletypeRegExpnatif String : tend le type String natif, en fournissant diffrentes options de formatage, de dcoupageetdanalysedechanesdecaractres
4.3 Lalias$get
Equivalente linstruction JavaScript document.getElementById(), lalias $get permet daccder un contrle de la page, via son modle DOM. Cet alias est utilisable dans tous les navigateurs:
$get('idControl')
4.4 Lesextensionsorientesobjet
LesextensionsorientesobjetapportesparleFrameworkJavaScriptsontlessuivantes: Crationdeclasses Spcificationdespacedenoms Miseenuvredelhritage Utilisationdesinterfaces Utilisationdnumrations
4.5 Exemplesdutilisationdecesextensions
4.5.1 Exempledecrationduneclasse Voici quelques exemples de mise en uvre, des extensions proposes par Microsoft Ajax Library:
DotnetFranceAssociationJamesRAVAILLE
11
LesbasesfondamentalesdeMicrosoftASP.NETAjaxv1.007/01/2009
' Exemple de cration de classes avec Microsoft Ajax Library // Enregistrement de l'espace de noms de la classe. Type.registerNamespace("ExtensionsJavaScript"); // Dfinition de la classe. ExtensionsJavaScript.Personne = function ExtensionsJavaScript$Personne(nom, prenom) { // Valorisation des attributs. this._nom = nom; this._prenom = prenom; } // Prototype de la classe. ExtensionsJavaScript.Personne.prototype = { toString : function toString () { return this._nom + ' ' + this._prenom; }, get_nom : function () { return this._nom; }, get_prenom : function () { return this._prenom; } } // Enregistrement de la classe. ExtensionsJavaScript.Personne.registerClass("ExtensionsJavaScript.Personn e");
' Exemple de cration dune numration Type.registerNamespace("ExtensionsJavaScript"); ExtensionsJavaScript.Couleurs = function(){}; ExtensionsJavaScript.Couleurs.prototype = { Rouge: 0xFF0000, Bleu: 0x0000FF, Vert: 0x00FF00, Blanc: 0xFFFFFF } Type.registerEnum("ExtensionsJavaScript.Couleurs");
' Exemple de mise en uvre de lhritage // Dfinition de la classe Employe. ExtensionsJavaScript.Employe = function ExtensionsJavaScript$Employe(nom, prenom, service) { ExtensionsJavaScript.Employe.initializeBase(this, [nom, prenom]); this._service = service; } // Enregistrement de la classe, avec l'hritage. ExtensionsJavaScript.Employe.registerClass("ExtensionsJavaScript.Employe" , ExtensionsJavaScript.Personne);
DotnetFranceAssociationJamesRAVAILLE
12
LesbasesfondamentalesdeMicrosoftASP.NETAjaxv1.007/01/2009
5 MicrosoftAjaxLibrary:lesclassesdunoyau
Ce sujet est trop vaste pour pouvoir le traiter dans ce support de cours. Il devra tre trait dansunautresupportdecours.Maisonpeuttoutdemmeseposerlaquestionsuivante:comment leclientfaitilpourdownloaderlesfichiersJavaScriptconstituantceFramework? Pour trouver une rponse cette question, il suffit de se positionner dans le fichier de configurationdelapplicationASP.NET.Ontrouvealorsladfinissantunhandler,quipeuttreutilis distance,pardesblocsdecodeJavaScript.Voiciladfinitiondecehandler:
<httpHandlers> <remove verb="*" path="*.asmx"/> <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/> </httpHandlers>
Par ailleurs, lutilisation de ce handler est visible dans le code source XHTML, que le serveur retourneauclient.Envoiciunexemple:
<script src="/DF-ExtensionsAjaxCoteServeurVB/ScriptResource.axd?d=4_dOjNXd0PPvxMzoLqP5Ut39d3BB7vr_NoCLtaBpR7njCjZai ou11hTzd33AXFZCDbjosECAkS8p0NaCp3_vZG78IGQOB_Yp2_gOn3lJCl81&t=fffffff f8e6551fd" type="text/javascript"></script>
DotnetFranceAssociationJamesRAVAILLE
13
LesbasesfondamentalesdeMicrosoftASP.NETAjaxv1.007/01/2009
6 LesextensionsduFrameworkASP.NETAjax
6.1 LesextensionsduFrameworkASP.NETAjax
Le Framework .NET propose, ct serveur, 5 contrles ASP .NETAjax. Ces contrles sont disponiblesdanslongletExtensionsAjaxdelaboiteoutilsdeVisualStudio: ScriptManager / ScriptManagerProxy : ces deux contrles permettent de mettre en uvre et paramtrer, les mcanismes Ajax dans les pagesASP.NET Timer : ce contrle fonctionne de manire analogue au contrle Timer du Framework .NET, pour les applications Windows .NET. Il permet un client Web dexcuter des requtes HTTP asynchrones, de manire rptitive UpdatePanel : ce contrle est un conteneur de contrles ASP .NET et XHTML,permettantdemettrejourdespartiesdunepageASP.NET UpdateProgress : ce contrle permet dafficher un message dattente, pendantlamisejourpartielledunepageASP.NET
6.2 LescontrlesScriptManageretScriptManagerProxy
LecontrleScriptManager Le contrle ScriptManager est obligatoire dans toutes les pages, dans lesquelles il est ncessaire dutiliser un contrle ASP .NET Ajax, un contrle Ajax Control Toolkit, ou tout autre mcanismeAjax.Ilpermet: DemettredispositionlesclassesetobjetsJavaScriptutilissdanslesscripts. Demettreenuvredesappelssynchronesetasynchronesdeservicesdistants. Degrerlalocalisationetlaglobalisationdespages. Lamisejourpartielledespages. Dutiliserleservicedapplicationdescuritetdegestiondeprofils. DenregistrerdesnouveauxscriptsJavaScriptbasesurMicrosoftAjaxLibrary. 6.2.1
DotnetFranceAssociationJamesRAVAILLE
14
LesbasesfondamentalesdeMicrosoftASP.NETAjaxv1.007/01/2009
allowCustomErrorsRedirect
Indique si les redirections derreurs personnalises sont autorises lors dunpostbackasynchrone(trueestlavaleurpardfaut) Lit et crit le message derreur envoyer au client lorsquune exception nongreseproduit,lorsdunpostbackasynchrone Contient lidentifiant du contrle serveur qui a dclench le postback asynchrone Dure en secondes, permettant de dfinir le timeout dun postback excutdemanireasynchrone Permetdedfinirltatduservicedauthentificationctclient Indique si les mthodes de pages ASP .NET peuvent tre appeles par le scriptctclient(falsepardfaut) Indiquesilerendupartielestautorispourlapage(truepardfaut) Indique si le contrle ScriptManager prend en charge via du code JavaScript, la mise en forme de donnes suivant une culture (false par dfaut) Indique si le contrle ScriptManager extrait des fichiers de scripts pour la culturecourante(falsepardfaut) Indique si le code JavaScript gnr contient des informations et instructionsdedbogage Indiquesilarequteexcuteestunpostbackasynchrone Permetdedfinirltatduservicedeprofilsdutilisateursctclient Permetdedfinirlesscriptscharger,suivantle mode:Auto(pardfaut), Inherit,DebugouRelease Indique si un navigateur ou une version de navigateur peut supporter le rendu partiel dune page. Si cette proprit vaut false, aucun rendu partiel ne sera effectu, indpendamment de la valeur de proprit EnablePartialRendering Mthode statique permettant dobtenir linstance du contrle ScriptManagerdelapageencours
asyncPostBackErrorMessage
asyncPostBackSourceElementID
asyncPostBackTimeOut
authenticationService enablePageMethod
enablePartialRendering enableScriptGlobalization
enableScriptLocalization
isDebuggingEnabled
supportsPartialRendering
getCurrent
DotnetFranceAssociationJamesRAVAILLE
15
LesbasesfondamentalesdeMicrosoftASP.NETAjaxv1.007/01/2009
Permet au contrle spcifi de dclencher un postback synchrone / asynchronedepuisunpanneaumodifiable Mthode statique permettant dajouter des blocs dinstructions JavaScript danslerendudunepage PermetdenregistrerunextenderAjaxdanslapage Mthode cach permettant dajouter un champ cach dans la page (contrleinputdetypehidden)
registerExtenderControl registerHiddenField
registerOnSubmitStatement
Mthodestatiquequiassurequelescriptctclientassocilvnement OnSubmitduformulaireestmisdansunrendupartieldelapage Permet de spcifier le positionnement du focus vers le contrle spcifi, aprsunpostbackasynchrone Est lev quand une exception nest pas gre ct serveur lors de lexcutiondunpostbackasynchrone Est lev lorsque le contrle ScriptManager va rsoudre une rfrence un script.Ilestainsipossibledemodifierlemplacementduscript
setFocus
asyncPostBackError
resolveScriptReference
LecontrleScriptManagerProxy Cependant, comment utiliser le contrleScriptManager ? Dans une application ASP .NET, il nestpasncessairedelajouterdanstouteslespages: Si les pages sont des pages Web classiques, on peut encapsuler ce contrle dans un contrle Webpersonnalis,afindecentraliserlinitialisationdesesattributsetsoncomportement. Silespagessontdespagesdecontenu,ilestpossibledajouteruniquementcecontrledans la page matre. Toutes les pages de contenues bnficieront automatiquement de contrle, lorsdeleurexcution. 6.2.2
Quelque soit le scnario que vous prenez, il se peut que vous avez besoin daccder au contrleScriptManagerdansunepageASP.NET.LecontrleScriptManagerProxyvouspermettrady accder:
<asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server"> </asp:ScriptManagerProxy>
DotnetFranceAssociationJamesRAVAILLE
16
LesbasesfondamentalesdeMicrosoftASP.NETAjaxv1.007/01/2009 Mais attention, toutes les proprits, mthodes et vnements du contrle ScriptManager, nesont paspropossautraversducontrleScriptManagerProxy. Cestpourquoi,onpourra prfrer lutilisationdaccesseurenlectureseulepourlexposer.
6.3 LecontrleUpdatePanel
Prsentation Un contrle UpdatePanel est un conteneur de contrles, dsignant une partie dune page, qui peut tre rafrachie de manire indpendante de la page. En effet, le contenu de ce contrle peut tre rafrachi de manire asynchrone, lorsque lun des contrles contenu (ou bien mme de la page) effectue un postback. Ainsi, vu quil permet alors dviter les rafrachissements complets des pages,onconstateleseffetssuivants: Rductionduscintillementdespages Meilleureinteractivitentrelutilisateuretlapplication 6.3.1
Afin de pouvoir tre utilis dans les pages Web, la proprit EnablePartialRendering du contrle ScriptManager doit tre valorise True (valeur par dfaut). Une page peut contenir un ou plusieurscontrlesUpdatePanel. 6.3.2 Proprits VoiciquelquespropritsducontrleUpdatePanel: Description Indiquesilespostbacksdescontrlesenfantsprovoquerontunemisejour ducontrleUpdatePanel.Trueestlavaleurpardfaut.ValoriseFalse, cettepropritpermetdautoriseruniquementunemisejourdynamique ContrledfinissantlerenduducontrleUpdatePanellorsdesonexcution Contrleutilispourajouterdynamiquementdescontrlesenfants IndiquesilamisejourducontrleUpdatePanel,faitpartiedelamisejour partielledelapage Indiquesilerenduducontrleesteffectuenmodeblockouinline. blockestlavaleurpardfaut Collectiondedclencheurs,ochacunestrattachunvnement permettantlamisejourducontrle
Proprit childrenAsTriggers
renderMode
triggers
DotnetFranceAssociationJamesRAVAILLE
17
LesbasesfondamentalesdeMicrosoftASP.NETAjaxv1.007/01/2009
updateMode
6.3.3 Miseenuvre
// C# <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> Date et heure n1 : <asp:Label ID="LblDateHeure1" runat="server" Text=""></asp:Label> <br /> <br /> Date et heure n2 : <asp:Label ID="LblDateHeure2" runat="server" Text=""></asp:Label> <br /> <br /> <asp:Button ID="CmdRafraichir" runat="server" Text="Rafraichir" onclick="CmdRafraichir_Click" /> </form>
protected void CmdRafraichir_Click(object sender, EventArgs e) { string sDateHeureCourante; sDateHeureCourante = DateTime.Now.ToString(); LblDateHeure1.Text = sDateHeureCourante; LblDateHeure2.Text = sDateHeureCourante; }
DotnetFranceAssociationJamesRAVAILLE
18
LesbasesfondamentalesdeMicrosoftASP.NETAjaxv1.007/01/2009
' VB .NET <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> Date et heure n1 : <asp:Label ID="LblDateHeure1" runat="server" Text=""></asp:Label> <br /> <br /> Date et heure n2 : <asp:Label ID="LblDateHeure2" runat="server" Text=""></asp:Label> <br /> <br /> <asp:Button ID="CmdRafraichir" runat="server" Text="Rafraichir" /> </form> Protected Sub CmdRafraichir_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CmdRafraichir.Click Dim sDateHeure As String sDateHeure = DateTime.Now.ToString() LblDateHeure1.Text = sDateHeure LblDateHeure2.Text = sDateHeure End Sub
Onobtientlersultatsuivant:
Etlorsdechaque clicksurleboutonRafraichir,lesdeuxdatessontmisesjour.Apportezau code prcdent la modification suivante: mettre le second affichage de lheure et le bouton de rafraichissement,dansuncontrleUpdatePanel.Onobtientalorslecodesuivant:
DotnetFranceAssociationJamesRAVAILLE
19
LesbasesfondamentalesdeMicrosoftASP.NETAjaxv1.007/01/2009
// C# <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> Date et heure n1 : <asp:Label ID="LblDateHeure1" runat="server" Text=""></asp:Label> <br /> <br /> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> Date et heure n2 : <asp:Label ID="LblDateHeure2" runat="server" Text=""></asp:Label> <br /> <br /> <asp:Button ID="CmdRafraichir" runat="server" Text="Rafraichir" onclick="CmdRafraichir_Click" /> </ContentTemplate> </asp:UpdatePanel> </form>
' VB .NET <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> Date et heure n1 : <asp:Label ID="LblDateHeure1" runat="server" Text=""></asp:Label> <br /> <br /> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> Date et heure n2 : <asp:Label ID="LblDateHeure2" runat="server" Text=""></asp:Label> <br /> <br /> <asp:Button ID="CmdRafraichir" runat="server" Text="Rafraichir" /> </ContentTemplate> </asp:UpdatePanel> </form>
Onobtientalorslersultatsuivant:
DotnetFranceAssociationJamesRAVAILLE
20
LesbasesfondamentalesdeMicrosoftASP.NETAjaxv1.007/01/2009 On peut remarquer que seuls les contrles contenus dans le contrle UpdatePanel, ont t mis jour lors de lexcution de la page ct serveur. Mme si le cycle de vie de la page est intgralement excut ct serveur, les donnes renvoyes au client ne contiennent que les informations sur la ou les parties de page mettre jour (y compris le ViewState). Voici le flux de donnesrenvoyparleserveur:
269|updatePanel|UpdatePanel1| Date et heure n2 : <span id="LblDateHeure2">28/12/2008 21:51:58</span> <br /> <br /> <input type="submit" name="CmdRafraichir" value="Rafraichir" id="CmdRafraichir" />
Aussi, ct serveur, tant donn que la page est intgralement excute, veuillez bien grer cette opration de postback particulire. En effet, nexcutez pas de tches ou de traitements particuliers, qui nont aucune utilit lors de la mise jour partielle de la page. Pour ce faire, tester la valeur de la proprit isInAsyncPostBack du contrle ScriptManager, et la proprit isInPartialRenderingdescontrlesUpdatePanel. 6.3.3.2 Dfinitionducontenu LecontenuducontrleUpdatePanel,peuttredfini: Demaniredclarative,enmodesourceoudesign,lorsdelaconceptiondunepage.Cestle casdupremierexempleraliscidessus. Demanireimprative: o En ajoutant des contrles la collection de contrles, accessibles au travers de la propritContentTemplateContainerducontrleUpdatePanel. o En dfinissant la proprit ContentTemplate, avec tout objet cr partir dune classe implmentant linterface ITemplate du Framework .NET. Cette opration peut uniquement tre effectue, si aucun contenu na pas t dfini de manire dclarative.
// C# UpdatePanel1.ContentTemplate = Page.LoadTemplate("~/UC/UC_Contenu.ascx");
DotnetFranceAssociationJamesRAVAILLE
21
LesbasesfondamentalesdeMicrosoftASP.NETAjaxv1.007/01/2009
6.3.3.3 Misejour ConcernantlamisejourduncontrleUpdatePanel,lesrglesdebase(pardfaut)sontles suivantes: ToutcontrlesitudansuncontrleUpdatePanelralisantunpostback,metjour: o LecontrleUpdatePanelluimme. o Tous les autres contrles UpdatePanel prsents dans la page, except pour ceux pourlesquelslapropritUpdateMode estvaloriseConditional. Toutcontrlecontenudirectementdanslapage,ralisantunpostback,metjourlapage,et parconsquentlescontrlesUpdatePanelcontenus.Cetterglenestplusvraiesiuntrigger (dclencheur) est dfinie sur un des contrles UpdatePanel de la page. Dans ce cas, on retombedanslecasprcdent.Ilexistedeuxtypesdetriggers: o Lestriggersasynchrones(AsyncPostBackTrigger). o Lestriggerssynchrones(PostBackTrigger). Cesdeuxtriggerspossdentdeuxproprits: ControlID:identifiantducontrledclenchantlepostback. EventName:nomdelvnementducontrle,partirduquellepostbackseraeffectu. Il est aussi possible de mettre jour dynamiquement le contrle UpdatePanel ct serveur, vialamthodeUpdate().Maisattention,cettemthodepeutleveruneexceptiondanslescaso: LapropritUpdateModeducontrleUpdatePanelestvaloriseAlways. Sielleestappeleaprslobtentiondurendudelapage.
6.4 LecontrleUpdateProgress
Prsentation La mise jour de la page peut tre potentiellement longue. De plus tant partielle et asynchrone,lutilisateurnevoitpasquunerequteatenvoyeauserveur,cequipeutlinciterde envoyerdenouveauunerequte, Pendant la mise jour partielle du page, le contrle UpdateProgress permet de prvenir lutilisateur,quunepartiedunepageestencoursdemisejour. 6.4.2 Proprits VoiciquelquespropritsducontrleUpdateProgress: DotnetFranceAssociationJamesRAVAILLE 6.4.1
22
LesbasesfondamentalesdeMicrosoftASP.NETAjaxv1.007/01/2009
Proprit
Description
displayAfter
Dureenmillisecondes,aprslaquellelerenduducontrleUpdateProgressest affich.Valeurpardfaut:500
dynamicLayout
ValeurboolenneindiquantsilecontrleUpdateProgressestrendu dynamiquementdanslapage.Trueestlavaleurpardfaut
progressTemplate
PermetdedfinirdynamiquementlecontenuducontrleUpdateProgress
AssociationduncontrleUpdateProgressunouplusieurscontrles UpdatePanel La proprit AssociatedUpdatePanelId permet de dsigner un contrle UpdatePanel particulier.Ainsi,lecontrleUpdateProgressapparatralorsquelecontrleUpdatePanelassocisera encoursdexcution.IldisparatraautomatiquementunefoislerenducontrleUpdatePanelaffich. Sicettepropritnestpasvalorise,alorslecontrleUpdateProgressseraaffichlorsdelexcution detouslescontrlesUpdatePaneldelapage Dfinitionducontenu Tout comme le contrle UpdatePanel, Le contrle UpdateProgress peut tre mis jour, soit de manire dclarative (lors de la conception de la page), soit de manire imprative (dynamiquementlorsdelexcutiondelapage). Miseenuvre Le contrle UpdateProgress est un conteneur de contrles. Il peut contenir tout type de contrlesASP.NET.Voiciunexemple: 6.4.5 6.4.4 6.4.3
DotnetFranceAssociationJamesRAVAILLE
23
LesbasesfondamentalesdeMicrosoftASP.NETAjaxv1.007/01/2009
<asp:UpdateProgress ID="UpdateProgress1" runat="server"> <ProgressTemplate> <asp:Image runat="server" ImageUrl="/Images/Attente.gif" ImageAlign="AbsMiddle" /> Veuillez patientez... </ProgressTemplate> </asp:UpdateProgress>
Voicilersultat,quiapparatautomatiquement,lorsdelamisejourpartielledunepage:
6.5 LecontrleTimer
Prsentation Ce contrle se comporte de manire similaire un contrle Timer dans les applications WindowsForms,enexcutedespostbacksintervallergulier.Ilpermetainsiderafraichirunepage WebouuneouplusieurspartiesdunepageWeb,intervallergulier(suivantsalocalisationdansla page,etlestriggersdfinis). Attention:lutilisationdececontrlepeutaugmenterletraficdedonnesentrelesclientset leserveurWeb. 6.5.2 Proprits Cecontrlepossdedeuxpropritsintressantes: Description IndiquesilecontrleTimerestactifctclient.Trueestlavaleurpardfaut. IntervalledetempsauboutduqueluneactionesteffectueparlecontrleTimerctserveur. Valeurexprimeenmillisecondes.Valeurpardfaut:60000(soit1minute). 6.5.1
LvnementTick Le contrle Timer possde un vnement Tick, qui permet de spcifier les instructions excutes ct serveur, chaque de fois que la dure dfinie dans la proprit Interval du contrle Timer,arriveexpiration. 6.5.3
DotnetFranceAssociationJamesRAVAILLE
24
LesbasesfondamentalesdeMicrosoftASP.NETAjaxv1.007/01/2009 6.5.4 Miseenuvre Voici un exemple dun contrle Timer, ralisant un postback toutes les secondes. En implmentantlvnementTick,onspcifielesactionsraliserchacundesespostbacks:
// C# <asp:Timer ID="Timer1" runat="server" Enabled="true" Interval="3000" ontick="Timer1_Tick" />
// VB .NET
<asp:Timer ID="Timer1" runat="server" Enabled="true" Interval="3000" /> Protected Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick LblDateHeure2.Text = DateTime.Now.ToString() End Sub
DotnetFranceAssociationJamesRAVAILLE
25
LesbasesfondamentalesdeMicrosoftASP.NETAjaxv1.007/01/2009
7 Conclusion
Dans ce chapitre, nous avons mis en vidence les avantages apports par la technologie Microsoft ASP .NET Ajax, dans le dveloppement dapplications Web. Elle permet de crer des applications plus interactives, offrant de surcrot de meilleurs performances, que des applications Webnonajaxises.
DotnetFranceAssociationJamesRAVAILLE