Jan.24

Microsoft ASP.NET AJAX – VERSION 1.0

C’est bon, c’est là officiellement, la version 1.0 du framework anciennement appelé Atlas 🙂

With ASP.NET AJAX, you can:

  • Create next-generation interfaces with reusable AJAX components.
  • Enhance existing Web pages using powerful AJAX controls with support for all modern browsers.
  • Continue using Visual Studio 2005 to take your ASP.NET 2.0 sites to the next level.
  • Access remote services and data directly from the browser without writing a ton of complicated script.
  • Enjoy the benefits of a free framework with 24×7 technical support provided by Microsoft.

Le lien : http://ajax.asp.net/

Vous trouverez sur ce post le HOL (basé sur la RC1) pour démarrer tout en douceur avec ce framework. Et en parcourant mon blog (catégorie Atlas), vous trouverez d’autres ressources (mais attention basé sur des versions antérieures !)..

A noter aussi, la version finale des Control Toolkit (avec notamment 2 super nouveaux contrôles : Calendar et MaskedEdit) et le ASP.NET AJAX January Futures CTP disponible sur la page de téléchargement : http://ajax.asp.net/downloads

Bon moi, j’ai du boulot pour migrer mes applications web Ajax sur mon serveur (resté encore en Beta2) vers cette nouvelle version 🙂

(update: n’oubliez pas de virer la balise tagMapping qui permettait d’implémenter les controls de base d’ ASP.NET v2 et d’utiliser ceux fournis par Atlas ! Ceci est obsolète, donc viré le de votre Web.config 🙂 sinon vous allez découvrir une bonne centaine d’erreur à la compilation !)

Info,.NET,Atlas

Nov.30

FormAuthentication, Session et UpdatePanel : PageRequestManagerParserErrorException

Je me suis retrouvé lors d’un dev d’une application Web dans une petite galère avec l’ASP.NET AJAX Extention !

La situation est simple, j’ai une page ASPX contenant une gridview dans un UpdatePanel qui est protégée par un formulaire d’authentification (authentication mode= »Forms » dans mon Web.Config), bref cas des plus classiques !

Seul problème, au bout d’un certain temps d’inactivité, votre session expire (timeout paramétrable dans la balise froms du Web.config). Avec un postback classique, le serveur détecte que vous n’êtes plus authentifié et donc vous renvoie vers la page de login (paramétré lui aussi dans la balise froms du Web.config).
Mais avec un UpdatePanel, vous recevrez un beau message d’erreur :

Après analyse, cela est tout à fait normal car coté client, on ne sait pas que la session a expirée ! L’appel Javascript de la librairie Atlas, qui est sensé recevoir les données sous forme XML pour mettre à jour votre UpdatePanel, va tomber sur la page de login (classique, c’est ce qu’il se passe côté serveur lorsque que vous tentez accéder à une page protégé !).

On peut vérifier cela très facilement en supprimant le « DocType » au début de votre page de login. Vous verrez que l’erreur change et maintenant n’arrive pas a parser la ligne <head runat= »server »> ce qui nous prouve que c’est bien la page login 😉

C’est en lisant le blog de Cyril qui relayé un post de Luis Abreu que j’ai découvert comment gérer facilement les erreurs avec Atlas pour pouvoir écrire ce petit script et résoudre le problème :

Avec ce bout petit de Javascript, on vient abonner notre fonction EndRequestHandler à l’évènement déclenché de la réponse du serveur. Notre fonction quand à elle, vient checker la présence d’une erreur dans la reponse du serveur, si oui regarde si les 51 premières caractères sont Sys.WebForms.PageRequestManagerParserErrorException. Dans ce cas on vient juste recharger la page par un window.location.reload() (postback classique) qui nous redirigera vers la page de login !

Et le tour est joué…. 🙂

Dev,Atlas

Oct.22

[Atlas] UpdatePanelAnimation : la galere des animations OnUpdating/ed

Est-ce un bug, un oublie ou juste moi qui me prend la tête pour rien ? Les UpdatePanelAnimation sont des extendeurs du controle UpdatePanel nous permettant de jouer une animation au rafraichissement d’un UP.

Je mets donc un ScriptManager, 2 UpdatePanel en mode Conditional et 2 UpdatePanelAnimationExtender mappés sur les UP respectifs (TargetControlID= »…. »). Je remplis en suite une animation sur le OnUpdating pour faire un FadeOut de l’UP et sur le OnUpdated un FadeIn.

Wahou c’est beau… La page disparait en fondu, se met à jour et hop reapparait 🙂

OUI, mais voila, le problème est que ces animations sont joués à chaque AsyncPostBack pour tous les UpdatePanels.
Dans mon cas les animations s’executés sur les deux UpdatePanels alors qu’un seul d’entre eux etaient mis a jour ! 🙁

On peux tester cela très facilement en rajoutant un Button sur la page qu’on enregistre à son chargement comme controle AsyncPostBack (ScriptManager1.RegisterAsyncPostBackControl(monButton)).
Sur le code du bouton on change le contenu d’un labelA d’un UpdatePanelA et met à ajout un UpdatePanelB (UpdatePanelB.Update()).
On constatera que le labelA n’a pas changé (vu que le UpdatePanelA n’a pas été Update()) mais l’animation sur celui ci c’est quand même executé.

Alors là, expliquez moi l’interet de jouer les animations qui portent le nom: OnUpdating et OnUpdated sur un UpdatePanel qui ne s’est pas Updating/Updated ?!?!?%% J’utilise la beta 1 fraichement téléchargé de vendredi, avait-on ce probleme avant ?

Enfin soit, ma petite astuce pour pouvoir me sortir de cette galere et controler l’execution des animations à été de poser une condition dans la sequence des animations:

Et dans ma page un petit script JS :

Enfin j’ajoute l’attribut OnClick sur les triggers de mon UpdatePanel A et B pour appeler la fonction setUPtoPlay :

De tel maniere chaque controle émettant un ASyncPostBack appele la fonction setUPtoPlay() qui stoque coté client le nom de l‘UpdatePanel qui est mis à jour et doit jouer l’animation.

Pour revenir sur ce que je disais au debut : Est-ce un bug, un oublie ou juste moi qui me prend la tête pour rien ??? 🙂

Dev,Atlas

Oct.21

[Atlas] Microsoft ASP.NET AJAX Beta 1

Hop la, depuis hier est sortie la version Beta 1 du projet Atlas maintenant renommé en Microsoft ASP.NET AJAX ainsi qu’une nouvelle release du AJAX Control ToolKit avec 3 nouveaux controls (DropDown, MutuallyExlcusiveCheckBox et ValidatorCallout).

Des deux cotés l’on remarque pas mal de gros changements au niveau des proprietes des controls. Déjà le ScriptManager ne propose plus de ErrorMessage. Les Triggers des UpdatePanel ont eux aussi changés. On retrouve deux types de triggers : PostBackTrigger et AsyncPostBackTrigger. Ex:

Vous remarquez aussi le changement du TagPrefix des controls d‘atlas à asp. De même l’assembly à renommé en Microsoft.Web.Extensions.

Du coté des Controls Toolkits, les proprietes de plusieurs controls sont à mettre directement dans la balise mère et non dans des balises filles du type « …..Details » ou « …Property ». Exemple :

Bref, compter de 10min à une bonne heure, en fonction de la taille de votre projet pour migrer votre code pour la beta 1 de ce magifique Framework 🙂

  • Microsoft ASP.NET AJAX :

http://ajax.asp.net/

  • Microsoft ASP.NET AJAX Beta 1 :

http://www.microsoft.com/downloads/……

  • ASP.NET AJAX Controls ToolKit :

http://ajax.asp.net/ajaxtoolkit/

Dev,Atlas

Oct.09

[Atlas] Appeller une fonction JS après un UpdatePanel

J’ai passé ma journée d’hier a chercher comment appeler une fonction JS (coté client donc) après l’update d’un UpdatePanel avec un rendu partiel du ScriptManager (enablepartialrendering= »True »).

J’ai enfin trouvé et en fait c’est vraiment tout bête. Il suffit d’ajouter dans votre Page_Load la ligne :

Exemple :

Et surtout n’oubliez pas le dernier parametre à True dans le cas d’un enablepartialrendering= »True » à votre ScriptManager, car c’est lui que j’avais oublié et qui m’a fait chercher de longues heures 🙂

Dev,Atlas

Jun.02

Petit tour du côté d’Atlas

What is ATLAS ?

Atlas is a free framework for building a new generation of richer, more interactive, highly personalized standards based Web applications

En clair, Atlas est une plateforme gratuite pour concevoir des applications Web 2.0 utilisant les concepts de l’AJAX entre autre. Elle est encore en version beta (derniere version a ce jour : April CTP) et est édité par le geant Microsoft.
En une phrase, Atlas est le framework coté client de l’ASP.NET 2.0 mais attention, on est pas obligé de developper en ASP.NET 2.0 pour profiter des librairies Atlas !

Controls Toolkit
En plus des libraires que nous propose la plateforme Atlas, on peut aussi télécharger une panoplie de « Controls » pouvant etre integrés a VS.net. Parmis ces Controls, on y trouve :

  • DragPanel : permet de drag&dropper des Panels
  • DropShadow : permet de cacher des Panels avec animation
  • ModalPopup : permet de créer des « pseudo-fenêtre »
  • PopupControl : permet d’afficher des controls dynamiquement
  • Et bien d’autres….

Ce qui est génial, c’est que tout est automatique… J’ai réalisé une petite page avec un Panel deplacable où l’on veut sur la page, avec un calendrier affiché dynamiquement au clique d’un textbox, et plein de petit gadget en moins de 15min et avec 0 ligne de code juste en utilisant ma souris !!!!!


La fenêtre est déplacable, même les bords arrondis sont gérés par un des controls (RoundedCorners), le message est un ModalPopup et le calendrier (control Calendar) est affiché dynamiquement par le control PopupControl. Et je rappelle que je n’ai ecrit AUCUNE ligne de code pour faire cette simple page !! (….. »Que du bonheur » :-D)

Tous les controls Atlas et leur demo : http://atlas.asp.net/atlastoolkit/

Démarrer avec Atlas
Si vous voulez vous y mettre, j’espere que .net 2.0 & VS2005 sont déjà installés sur votre machine 🙂
Il vous faudra ensuite le framework Atlas et je vous conseille aussi de télécharger le ControlsToolkit :
http://atlas.asp.net/default.aspx?tabid…..
A regarder, la video de Scott Guthrier, le directeur général de .NET : http://download.microsoft.com/download/…../asp_net_atlas.wmv
Toutes les docs sur Atlas sont dispo ici : http://atlas.asp.net/docs/default.aspx

Des démos de sites
Enfin pour finir, voici quelques sites utilisant ATLAS :

Et sans oublier le site officiel : http://atlas.asp.net

.NET,Atlas