4. Le routage
⦿ Pour mémoire …
(Ces images sont issues de la MSDN)
2013-12-16
3T – ASP.NET MVC
4
5. Le routage
⦿ Et pour ASP.NET MVC ?
Deux impératifs :
- un paramètre controller
- un paramètre action
2013-12-16
3T – ASP.NET MVC
5
6. Le routage
⦿ La clé ? L’Url Routing Module
2013-12-16
3T – ASP.NET MVC
6
7. Le routage
⦿ Une route, c’est quoi ?
2013-12-16
3T – ASP.NET MVC
7
8. Le routage
⦿ Une route, c’est quoi ?
2013-12-16
3T – ASP.NET MVC
8
9. Le routage
⦿ Des exemples de routes …
routes.MapRoute(
name: "Ma-Premiere-Route",
url: "ma-premiere-route"
);
routes.MapRoute(
name: "Ma-Premiere-Route",
url: "ma-premiere-route/{monParametre}"
);
2013-12-16
3T – ASP.NET MVC
9
10. Le routage
⦿ … encore des exemples de routes …
routes.MapRoute(
name: "Ma-Premiere-Route",
url: "{controller}/{action}"
);
routes.MapRoute(
"Ma-Premiere-Route",
"{controller}/{action}",
new { controller = "Home", action = "Index"}
);
routes.MapRoute(
"Ma-Premiere-Route",
“ma-page",
new { controller = "Home", action = "Index"}
);
2013-12-16
3T – ASP.NET MVC
10
11. Le routage
⦿ … et avec des contraintes
routes.MapRoute(
name: "Historique",
url: "{annee}/{mois}/{jour}",
defaults: new { controller = "Home", action =
"Historique" },
constraints: new
{
annee = @"d{4}",
mois = @"d{2}",
jour = @"d{2}"
}
);
2013-12-16
3T – ASP.NET MVC
11
12. Le routage
⦿ Pour résumer
Arrivée de la
requête
Récupère une
implémentation de
IRouteHandler
Récupère une
implémentation de
IHttpHandler
Prise en charge par
UrlRoutingModule
Pour chaque
route, évalue
également les
contraintes
Exécute
l’implémentation de
IHttpHandler
Parcourt la table de
routage
Cherche une route
dont l’url
correspond à celle
de la requête
Retourne la réponse
2013-12-16
3T – ASP.NET MVC
12
16. Les moteurs de vues
⦿ Une action veut retourner une vue …
⦿ Et après ?
2013-12-16
3T – ASP.NET MVC
16
17. Les moteurs de vues
Contrôleur
ViewResult
ViewEngines
ViewEngines
IView
IView
Return View()
FindView
IView (ou pas)
Render
Rend la main après avoir écrit dans la réponse
Rend la main
2013-12-16
3T – ASP.NET MVC
17
19. Les moteurs de vues : Razor
⦿ Moteur de templating
⦿ Tout est dans le @
⦿ Syntaxe légère
⦿ Une panoplie de Helper extensible
⦿ (mais aussi disponible pour les autres moteurs !)
⦿ Il n’est pas lié qu’à ASP.NET MVC
2013-12-16
3T – ASP.NET MVC
19
20. Les moteurs de vues : Razor
⦿ La composition vue d’un fichier _Layout.cshtml
2013-12-16
3T – ASP.NET MVC
20
21. Les moteurs de vues : Razor
⦿ HTML Helpers
⦿ + Data Annotations
⦿ = Vue
2013-12-16
3T – ASP.NET MVC
21
22. Les moteurs de vues : Razor
⦿ Une classe est générée pour chaque vue
2013-12-16
3T – ASP.NET MVC
22
23. Les moteurs de vues : Razor
⦿ Une classe est générée pour chaque vue
⦿
2013-12-16
C:WindowsMicrosoft.NETFramework64v4.0.30319Temporary ASP.NET Files...
3T – ASP.NET MVC
23
25. Démo - ModelMetadataProvider
⦿ Objectifs :
⦿ Générer des formulaires dynamiquement
⦿ Pouvoir extraire des metadata d’une base de
données
⦿ Avoir une cohabitation avec des modèles plus
classiques qui utilisent les data annotations
2013-12-16
3T – ASP.NET MVC
25
27. Démo – Razor sans ASP.NET MVC
⦿ Objectifs :
⦿ Utiliser Razor pour générer du contenu …
⦿ … dans une application console
2013-12-16
3T – ASP.NET MVC
27
31. Web API
⦿ REST ? 3 règles principales
⦿ URI : Identifiant de ressources
⦿ Verbe HTTP : Identifiant d’opération
⦿ Réponse HTTP : Représentation d’une
ressource
2013-12-16
3T – ASP.NET MVC
31
33. Web API
⦿ Des exemples …
⦿ Récupérer un produit ?
⦿ POST ? NON !
⦿ GET ? OUI !
⦿ GET http://monsiteweb/livre/3
2013-12-16
3T – ASP.NET MVC
33
34. Web API
⦿…
⦿ Créer un produit ?
⦿ GET ? NON !
⦿ POST ? OUI !
⦿ POST http://monsiteweb/livre/creer
⦿ Mais aussi : PUT, DELETE, PATCH, HEAD
2013-12-16
3T – ASP.NET MVC
34
35. Web API
⦿ Format des données et content negociation
⦿ Entête Accept
⦿ Application/json
⦿ Application/xml
⦿ …
{
"Id":5,
"Nom":"Produit 5"
}
<Produit xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://schemas.datacontract.org/2004/07/MvcApplication.Controllers">
<Id>5</Id>
<Nom>Produit 5</Nom>
</Produit>
2013-12-16
3T – ASP.NET MVC
35
36. Web API
⦿ ASP.NET MVC ou ASP.NET Web API ?
2013-12-16
3T – ASP.NET MVC
36
37. Web API
⦿ Un modèle similaire à ASP.NET MVC
2013-12-16
3T – ASP.NET MVC
37
38. Web API
⦿ Et à l’usage ?
public class ValuesController : ApiController
{
public IEnumerable<string> Get()
{
return new[] { "value1", "value2" };
}
}
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
2013-12-16
3T – ASP.NET MVC
38