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