JavaScript est devenu un langage incontournable sur le web, popularisé par sa facilité d'utilisation malgré ses (nombreux) inconvénients. Si l'utilisation de JavaScript peut aujourd'hui s'envisager sur toute la stack d'une application web grâce par exemple à Node. js, il n'en reste pas moins que l'intégrer massivement dans une application web classique (par exemple écrite en Asp.Net) pour manipuler le DOM et faire de l'Ajax conduit souvent à un code difficilement testable et maintenable. L'utilisation de jQuery et l'écriture de Javascript non intrusif améliorent les choses mais laissent le code Javascript fortement lié au DOM et difficilement lisible.
Pour apporter une réponse à cette problématique, et faciliter l'écriture d'application riche avec Javascript (par exemple une Single Page Application) plusieurs frameworks MV* (ou MVWhatever), tels que Knockout. js ou Backbone. js, ont fait leur apparition. Parmis eux, AngularJS semble être le plus prometteur, et celui qui rencontre le plus grand succès, peut-être (et même sûrement) parce qu'il est développé par Google.
Dans cet article nous allons voir comment l'utiliser pour faire du CRUD avec ASP.NET Web API côté serveur sous Visual Studio 2013. Une application web qui gère le CRUD d'une entité User. L'application est sur une page, elle affiche la liste des utilisateurs, un moyen de les éditer directement dans la liste, ainsi que d'en ajouter de nouveaux. Rien de révolutionnaire donc, mais une demande fonctionnelle récurrente.
L'implémentation côté serveur
Nous partons d'un projet Visual Studio d'application Web ASP.NET MVC classique. Nous ajoutons un contrôleur Web Api avec les méthodes de Read/Write, que nous modifions pour obtenir :
public class UserController : ApiController
Il sera en charge des donnés et effectuera le CRUD dans notre base de données. ASP.NET Web API est une façon simple d'exposer de données en REST.
Pour l'injection du repository, nous installons le package Nuget "Unity bootstrapper for ASP.NET Web API" et un repository de demo. Une Remarque au passage, nous avons modifié le Put pour ne pas avoir besoin de passer l'id en argument car nous le stockons dans l'Entité.
N'oublions non plus cette ligne dans le global. asax :
GlobalConfiguration.Configure(WebApiConfig.Register);La page web Asp.Net MVC
Il nous faut ensuite une page, pour cela nous créons un contrôleur classique et une vue (qui aurait pu aussi être simplement du html). Nous avons une première partie pour la création.
User CRUD
@Html.LabelFor(model => model.FirstName, new )
@Html.LabelFor(model => model.LastName, new )
Notez les @ng_model qui deviendront ng-model lors du rendu de la page ainsi que l'absence de .


