lundi 7 juin 2010

ASP.NET MVC : Actions avec des listes en paramètres

Y’a rien à faire, j’arrive pas à m’y habituer… Je suis à chaque fois épaté de voir avec quelle facilité MVC gère les paramètres dans les contrôleurs. Après l’envoi de fichiers, je me suis demandé comment cette fois récupérer une liste dans mon modèle.

La première pensée que j’ai eue était “non, ça doit pas être possible”. La seconde “non, voyons, ou alors les mecs qui ont fait MVC c’est des Dieux”. Puis à la 3ème, qui était “il me semble qu’en PHP on peut, si en MVC on peut pas c’est la honte quand même”, je me suis décidé à effectuer quelques tests. Et je n’ai pas été déçu, puisqu’effectivement, c’est tout à fait possible de binder directement les paramètres à une liste.

Pour cela, c’est très simple : on définit notre action avec un paramètre de type liste (ou un tableau, ça marche aussi)

public ActionResult ActionQuiVeutUneListe(List<String> laListe)

et on peut appeler la page en lui passant plusieurs paramètres du même nom ; chacun des paramètres sera un des élément de la liste.
L’URL sera du type: /Home/ActionQuiVeutUneListe?laListe=elmt1&laListe=elmt2&laListe=elmt3

En plus de ça, on a aussi la possibilité d’ordonner les éléments de la liste en mettant leur position entre crochets. La numérotation doit se faire de 0 au nombre d’éléments, s’il y a un trou dans le compte les éléments suivants ne seront pas pris.

/Home/ActionQuiVeutUneListe?laListe[2]=elmtC&laListe[0]=elmtA&laListe[1]=elmtB
En tapant cette URL, on aura les éléments dans l’ordre : “elmtA”, “elmtB”, “elmtC”.

image

Maintenant, il ne vous reste plus qu’à faire vos liens vers cette page. Pour cela, comme d’habitude, deux façons de faire :

Si vous êtes dans un formulaire, pas de soucis, il suffit de faire plusieurs input avec le même nom (ou en mettant l’index entre crochets dans les noms).
Par contre, si vous voulez faire un simple lien, vous ne pourrez pas utiliser les Html Helper, il vous faudra construire le lien à la main ou bien faire votre propre Helper (à moins que j’aie mal regardé leur fonctionnement, si quelqu’un a des infos je suis à votre écoute)

mercredi 2 juin 2010

Non, ASP.NET n’ajoute pas de fonctionnalités aux navigateurs

On m’a récemment posé la question suivante : “est-ce qu’il est possible en asp.net de faire une liste de choix éditable ?” (si vous avez lu le titre du post, vous vous doutez déjà de la réponse, mais je vais quand même expliquer un peu)

Quand je me pose une question comme ça, j’ai plusieurs réflexes :

  • Regarder si il existe une propriété dans ma DropDownList dont le nom ressemble à ce que je veux faire. Si les noms ne sont pas suffisamment explicites, on peut toujours faire un petit tour sur msdn
  • Faire une recherche Google (j’y reviendrai)
  • Réfléchir au html qu’on veut voir générer. Si ça ne se fait pas tout seul, il va bien falloir trouver comment le faire nous même. Certains oublient parfois que ce qu’asp.net génère sera affiché dans des navigateurs webs (et pas seulement Internet Explorer, quoi qu’en disent certaines mauvaises langues)

Et c’est là tout le problème : le contrôle DropDownList en asp.net va générer une balise <select> en html… Et cette balise en html n’est pas éditable, quelles que soient les options qu’on y mette dedans ; pas besoin d’être un spécialiste asp.net pour en arriver à cette conclusion. Cette option n’est pas possible en html, asp.net ne peut pas l’inventer.

Et donc, n’y a-t-il pas de solution ? Bien sûr que si, comme avec n’importe quel autre langage serveur qui ne propose pas cette option : faire du JavaScript.
Il existe énormément de possibilité pour avoir un comportement similaire, et de toute façon d’autres personnes l’ont déjà fait avant : une recherche Google vous donnera plusieurs codes touts faits.
Peut-être même qu’en cherchant un peu plus quelqu’un a écrit un contrôle serveur asp.net qui fera tout le javascript pour vous (après c’est selon vos préférences, à vous de voir si la perte de temps dans la recherche de la solution miracle est nécessaire, ou bien si vos yeux pourront supporter de voir quelques lignes de JavaScript).

mardi 1 juin 2010

La Bewise Day Conference : quand y’en a plus, y’en a encore !

Avis à la population : Bewise vient d’ouvrir son site “After BDC”, où vous pourrez trouver les photos de l’évènement, ainsi que des slides et démos des différentes sessions et ATE.

Le contenu se remplira petit à petit au fil des semaines, soyez à l’écoute !

L’adresse ? c’est par là : http://afterbdc.bewise.fr/

Notez aussi que si vous utilisez Twitter, vous pouvez suivre le flux de l’after BDC par ici : http://twitter.com/afterbdc

lundi 10 mai 2010

La librairie Microsoft Ajax abandonnée, au profit de jQuery

Vous vous souvenez de la librairie Microsoft Ajax ? J’en avais parlé l’an dernier lors de la Bewise Day Conference (et aussi dans un post quelques temps après). Pour mémoire, il s’agissait d’une librairie pur JavaScript qui proposait notamment un repeater et du databinding en JavaScript, qui n’est jamais sorti du stade de la beta (voire même preview, je me souviens plus très bien)

Eh bien j’ai été surpris en voyant Scott Guthrie nous parler des contributions de Microsoft à jQuery. Au programme : templates clients et data binding (renommés data linking pour l’occasion, jQuery ayant déjà une fonction nommée “bind”), des fonctionnalités déjà présentes dans la librairie de Microsoft. J’ai donc eu un petit doute : cette librairie ne devait-elle pas être fournie avec le framework 4 ? Pourquoi n’est-elle pas dans Visual Studio 2010 alors qu’elle était dans les beta ? Une vérification sur la page codeplex d’asp.net m’a confirmé ce que je pensais : plus la moindre trace de cette librairie.

C’est donc jQuery qui va hériter de ces fonctionnalités plus qu’intéressantes, et finalement, c’est loin d’être une mauvaise nouvelle : même si les 2 librairies cohabitaient très bien, on n’aura finalement besoin de connaitre qu’une seule librairie, plus de risque de se perdre avec les syntaxes différentes utilisées par jQuery et MS Ajax.

jQuery Templates

Au programme donc, nous avons les templates : une version JavaScript des repeaters.
Comment ça fonctionne ? Eh bien de la manière suivante :
Il nous faut définir un template (ici dans la balise script, afin de ne pas l’afficher tel quel dans la page), et un container dans lequel jQuery injectera le html généré depuis le template :

   1: <div id="contactContainer">
   2: </div>
   3: <script id="contactTemplate" type="text/html">
   4: <div>
   5:     Name: {{= name }}<br />
   6:     Phone: {{= phone }}
   7: </div>
   8: </script>

Une fois le template défini, on va lui associer nos données, par exemple un tableau JavaScript dans notre exemple, mais il pourrait être intéressant de l’associer au résultat d’un appel Ajax, par exemple.

   1: <script type="text/javascript">
   2:     var contacts = [
   3:         { name: "Scott Guthrie", phone: "415-555-2222" },
   4:         { name: "Guillaume Lacasa", phone: "05 11 22 33 44" }
   5:     ];
   6:  
   7:     $("#contactTemplate").render(contacts).appendTo("#contactContainer");
   8: </script>

Data-linking

Seconde nouveauté, le data-linking. L’idée est de lier une propriété d’un objet avec une propriété d’un autre objet : quand on en modifie un, l’autre est modifié automatiquement. Pas de code pour cette fonctionnalité, mais vous pouvez retrouver un exemple d’utilisation sur le blog de maître Gu.

Je reviendrai plus en détail sur chacune de ces fonctionnalités, qui offrent des possibilités plus poussées que le peu que j’ai exploré à ce jour : boucles, conditions, linking mono et bi-directionnel, et combinaisons du linking avec les templates.

mardi 4 mai 2010

Bewise recrute un admin système et réseaux

Et oui, Bewise recrute encore. Tu aimes Exchange ? Tu maitrises Active Directory ? La nuit, tu rêves de trames IP ? Et tu as envie de travailler à Toulouse, la ville où il fait toujours beau (ou presque…) ? Alors lis les détails de l’annonce :


Bewise, basée à Toulouse, est spécialisée sur les technologies Microsoft. Nous sommes donc aujourd'hui fortement engagés sur l'ensemble des technologies Microsoft (plate-forme .NET, plate-forme applicative, serveurs, etc.).

Nous recherchons actuellement un Administrateur Système et Réseaux h/f.

Rattaché au Directeur Technique, vous aurez la gestion complète et autonome de l'infrastructure technique de Bewise.

Vos missions :

  • Garantir le bon fonctionnement du système d'information et le niveau de service attendu
  • Assister les utilisateurs et les consultants
  • Gérer le parc de téléphonie mobile et fixe
  • Gérer la salle de formation
  • Mettre en œuvre les produits serveurs du catalogue de Microsoft

Vous êtes autonome, rigoureux, organisé et passionné par la technologie.

Vous avez 1 an d'expérience sur les systèmes Microsoft.

Vous avez une bonne connaissance des technologies suivantes:

  • Windows 2008
  • Active Directory
  • Exchange

La connaissance d'autres produits du catalogue Microsoft serait un plus.

Rémunération selon profil.

http://www.bewise.fr/fr-FR/presentation/Pages/Administrateur-Système-Réseaux.aspx


Bewise recrute aussi des consultants .NET, Sharepoint et BI, sur Toulouse et Aix-en-Provence : http://www.bewise.fr/fr-FR/presentation/Pages/jobs.aspx

jeudi 29 avril 2010

La BDC était trop courte ? Elle revient à Aix le 18 mai !

Vous êtes nombreux à avoir apprécié la Bewise Day Conference le 1er avril dernier… Mais certains d’entre vous n’ont peut-être pas pu venir, ou ont peut-être envie d’y retourner.

Eh bien pas de problème, la BDC est de retour, l’équipe de Bewise Sud-Est vous accueillera au Pasino d’Aix en Provence pour une BDC au son des cigales.

Plus d’informations et inscriptions sur le site de la Bewise Day Conference d’Aix en Provence

mercredi 31 mars 2010

Au fait, j’avais pas quelque chose de prévu pour demain moi ?

Et oui, demain c’est le premier avril. Comme chaque année vous allez pouvoir vous amuser à accrocher des poissons aux dos de vos amis, et éplucher les informations pour trouver les plus improbables… Mais cette année, Bewise vous propose encore mieux !

IMAGE_303

Et oui, la Bewise Day Conference est de retour dès demain, avec tout plein de technos, du développement, de l’IT, et des tables Surface !