vendredi 27 mars 2015

ASP.NET 5 - vNext

ça arrive bientôt, on a hâte !!
En attendant voici un premier aperçu (cliquer sur l'image) :



dimanche 1 mars 2015

Passer des données à une vue partielle via le ViewDataDictionary en ASP.NET MVC 4

Le ViewDataDictionary est un conteneur permettant de faire passer des données entre un "controller" et une "view".
Lorsqu'on observe les différentes signatures du Helper "Partial", on voit qu'on peut entre autre lui passé en paramètre un model, mais également un ViewDataDictionary et c'est ce qui nous intéresse ici :




Exemple d'utilisation
Voici un scénario simple d'utilisation que j'ai choisi pour illustrer l'utilisation du ViewDataDictionary :
  • J'ai un site web avec 3 pages accessibles via 3 onglets visibles sur les 3 pages.
  • Je souhaite mettre en surbrillance l'onglet courant sur laquelle je suis.
  • J'ai une vue pour chaque page, et dans chacune d'elle je référence ma vue partielle contenant mes onglets comme le montre la figure ci-dessous  :


L'idée est donc de passer à ma vue partielle un identifiant unique indiquant l'onglet courant afin que ma vue partiel mette en évidence l'onglet de ma page consulté. Nous allons donc utilisé le ViewDataDictionary pour le faire.

Dans notre vue correspondant à l'onglet 1, nous auront une ligne permettant l'injection de notre vue partielle avec en paramètre un "ViewData" simple (clé : onglet, valeur : 1) spécifiant le numéro de l'onglet courant en valeur :

   
@Html.Partial("_PartialMenuOnglet", new ViewDataDictionary {{ "onglet", "1"}})


Nous aurons donc a répéter simplement cette ligne dans chacune de nos vue avec le numéro de l'onglet correspondant voulu.

Dans notre vue partielle nous auront donc accès à notre ViewDataDictionary sur lequel nous pourrons vérifier la valeur de "l'onglet courant" et ainsi adapter nos onglets en conséquence :

@if (ViewData["onglet"] == "1")
{
     <input type="button" value="Onglet1" class="ongletActif" />
}
else
{
     <input type="button" value="Onglet1" class="ongletInactif" />
}
<br />
@if (ViewData["onglet"] == "2")
{
     <input type="button" value="Onglet2" class="ongletActif" />
}
else
{
     <input type="button" value="Onglet2" class="ongletInactif" />
}
<br />
@if (ViewData["onglet"] == "3")
{
     <input type="button" value="Onglet3" class="ongletActif" />
}
else
{
    <input type="button" value="Onglet3"  class="ongletInactif" />
}


Dans le code ci dessous, on applique une classe CSS adapté donnée (ongletActif) à l'onglet actif et une autre (ongletInactif) correspondant aux onglets inactifs.

Conclusion
L'exemple ci-dessous est assez simple et est juste à titre illustratif mais nous laisse présager une panoplie d'utilisations possibles du ViewDataDictionary en fonction des besoins, dans l'objectif de transmettre aisément des données au travers des vues MVC.

jeudi 26 février 2015

Datatables Jquery dans votre application ASP.NET MVC 5 - 2ème partie

2ème volet consacré au Datatables Jquery dans votre application ASP.NET MVC 5. Cette fois-ci nous allons voir comment communiquer avec le serveur afin d'alimenter dynamiquement notre Tableau.

jeudi 29 janvier 2015

Les Datatables Jquery dans votre application ASP.NET MVC 5

Le "Datatables Jquery"  est un plugin javascript gratuit permettant d'afficher vos données sous forme de tableau : chose récurrente demandée dans les projets informatiques. L'avantage de ce plugin est la richesse des fonctionnalités natives : tri, pagination, recherche sur les colonnes, chargement dynamique, etc

mercredi 31 décembre 2014

Bilan 2014 : une année riche techniquement et humainement

ça y est : on est à moins de 4h de la fin de l'année 2014, et j'ai décidé d'écrire un petit billet sur cette année qui fut très riche pour moi sur le plan professionnel (et personnel aussi). Ce billet me servira de tremplin si je'puis dire les choses ainsi pour attaquer l'année 2015 en force.

Plein d'articles de blog, mais peut-être pas assez
J'ai écris plein d'articles de blogs en 2014 mais peut-être pas assez, du coup j'ai décidé pour l'année à venir d'écrire au moins le double d'articles pour l'année à venir.
Objectif 2015 : 2 articles par mois

Pas de commentaires... une déception 2014
Je me demande si c'est parce que j'écris en français et que la communauté des développeurs est plutôt Anglophone, mais en tout cas, je n'ai reçu aucun commentaire sur aucun de mes articles... je me dis également que ces derniers ne sont pas assez riche.
Objectif 2015 : avoir au minimum 2 commentaires sur mon blog :)

2014 mon année ASP.NET MVC-Javascript
Cette année est celle où j'ai eu l'occasion d'approfondir mes compétences de façon assez exponentiel sur "razor et compagnie". J'ai eu l'occasion de tester pas mal de framework Javascript, et d'en faire beaucoup (à mon habitude).

Les tests
Cette année 2014, j'ai également eu l'occasion d'approfondir encore d'avantage mes compétences en BDD/TDD.
Objectif 2015 : continuer à faire du test, et promouvoir l'intérêt de faire du test sur les applications, car on en fait toujours pas assez à mon gout.

L'agilité
Moi qui ne croyait pas trop à SCRUM à mes débuts, je peux dire que j'en suis plus que convaincu aujourd'hui, et bien sur, je crois en l'Agilité tout court d'avantage.
Objectif 2015 : ne rien changer : continuer dans l'agilité.

La communication : l'aspect Humain en force (l'ambiance au sein de l'équipe)
J'ai eu l'occasion d'avoir des responsabilités dans certains de mes missions cette année, et je peux dire à ce stage de ma carrière que la chose la plus importante dans un équipe de développement (et dans tous projet informatique d'ailleurs) est l'aspect humain : cette notion comprend bien évidemment une communication riche sur le fond, mais aussi un point qui me semble fondamental : l'ambiance. L'ambiance au sein d'une équipe est je pense extrêmement importante car d'après moi, c'est la seule chose que l'ont retient après chaque projet. Combien de fois j'ai entendu autour de moi (on avait une équipe de m*rde, j'étais dans une s*le équipe,etc). J'ai eu l'occasion de travailler dans des supers team cette année et j'ai pu constater l'intérêt de l'importance de l'ambiance au sein des équipes. J'en parlerai beaucoup cette année sur mon blog.
Objectif 2015 : cultiver la bonne ambiance au sein des équipes dans lesquelles je travaillerai et poster des billets sur ce point.

Objectifs 2015
Au final voici quelques objectifs supplémentaires que je me donne sur l'année à venir :
- Continuer à cultiver la culture du bon code : un code simple et efficace.
- Continuer à cultiver l'excellence dans le travail
- Viser le 0 bugs dans mes projets (et oui, pourquoi pas)
- Publier et partager plus sur le Web
- Apprendre 3 nouveaux langages de programmation
- Publier plus d'articles sur ASP.NET MVC
- Cultiver la bonne ambiance au travail

Très bonne année 2015 à tous et à très bientôt !

dimanche 30 novembre 2014

A la découverte de Leaflet js - librairie Javascript de cartogaphie


Il existe une multitude d'Api de cartographie (Google Map, Bing Map, OSM,etc) présentant chacune des avantages/inconvénients divers (prix, ergonomie, complexité d'intégration, etc). Le fait est que chacune présente des différences d'implémentations et il est souvent difficile de faire son choix. Ainsi, l'utilisation d'une librairie tierce faisant abstraction de ces différences serait un choix judicieux pour un projet intégrant la cartographie.

Leaflet est une librairie Javascript développé par Vladimir Agafonkin permettant l'intégration de la cartographie sur les sites internet.

Pourquoi Utiliser Leaflet ?

  • Parce ce c'est une librairie qui fait abstraction des différentes API de cartographie actuelles (Google Map, BingMap, OpeStreetMap, etc) : ainsi à tout moment, on pourra changer de provider de Map sans pour autant changer la logique métier associée à notre Map qu'on aura développé.
  • Cette librairie présente l'avantage d'être "responsive", et fonctionne globalement bien sur tous les terminaux (mobile, tablettes, etc).
  • Elle a été conçue et pensée dans les standards et tendance actuelle du Web, avec notamment l'intégration facile avec le HTML5 et CSS3, tout en restant accessible sur les anciens navigateurs.
  • Les fonctionnalités de la librairie : Leaflet intègre une quantité assez conséquente de fonctions de manipulation de Map : les effets de Zoom, la gestion des markers (pins sur la carte), la gestion des "event" par défaut (clique, gestion des entrées clavier, etc)
  • Le légereté de la librairie  à peine 34Kb compressé
  • La documentation de l'Api : assez complète sur le site même, on trouve également plein de référence sur internet
  • La couche vectorielle qui permet de faire des tracés de formes géométriques (cercle, polygones, etc)
  • La richesse des plugin :  je dirai que c'est ce qui fait de cette librairie un choix de premier ordre car il existe une multitude de plugins existant pour cette librairie permettant de "customiser" votre Map, et de répondre à tout type de besoins associés.

La richesse des plugins Leaflet
Les plugins associés sont répertoriés directement sur le site : http://leafletjs.com/plugins.html. Exemple de plugin : Leaflet.Draw  qui permettant le tracé vectoriel :

Aperçu de Leaflet.Draw

Dans mon prochain article, je ferai un démo de l'intégration de Leaflet dans une application Asp.net mvc, avec des exemples d'utilisation de plugins associés.