Sortie d'ASP.NET MVC Preview 3

Le mardi 27 Mai est sorti la Preview 3 du framework MVC d'ASP.NET. Scott Guthrie avait parlé, le mois dernier, d'une version interne chez Microsoft qui incluait pas mal de fonctionnalités de cette preview. Cette version contient néanmoins des fonctionnalités que celle du mois dernier n'avait pas dont quelques améliorations et perfectionnement en plus des outils pour Visual Studio 2008.

Vous pouvez télécharger un installeur pour la Preview 3 du framework MVCd'ASP.NET ici. Vous pouvez également télécharger les codes sources ainsi que le framework de test unitaires ici.

Contrôleur de méthode d'action

La Preview 3 du framework MVC ASP.NET comprend les modifications du contrôleurs qui avaient été discutées et vues dans les sources de la version d'Avril. Il y a tout de même eu quelques ajustement.

Vous pouvez continuer à écrire des méthodes du contrôleur qui retournent "void" et qui encapsule toute la logique de l'action. Par exemple :

image

Qui rendra le HTML suivant quand on l'exécute :

image

La Preview 3 supporte maintenant une approche où vous retournerez un objet "ActionResult" qui permet d'indiquer le résultat de l'action et d'effectuer un traitement en rapport. Cela va permettre de rendre les tests beaucoup plus facile à réaliser. Cela va aussi permettre d'avoir une composition plus propre et d'avoir un contrôle sur l'exécution.

Par exemple, nous pourrions utiliser LINQ to SQL avec notre méthode "Browse" pour récupérer une liste d'objet "Product" de notre base de données et indiquer que nous voulons une vue pour les afficher. Le code suivant passera trois "ViewData" à la vue :

  • Title (string)
  • CategoryName (string)
  • Une liste de "Product" (liste typée)

image

Un des avantages d'utiliser l'ActionResult ci-dessus est que cela rend la création d'un test du contrôleur vraiment simple. Ci-dessous un test qui vérifie la comportement de notre méthode "Browse" :

image 

Nous pouvons donc créer une vue dans le répertoire \Views\Products pour afficher la réponse en utilisant le "ViewData" qui a été initialisé au-dessus :

image

Lorsqu'on se rend sur /Products/Browse/Beverages, on obtient maintenant le résultat suivant (les utilisations de ViewData sont entourées en rouge) :

image

Notez qu'en plus de "ViewResult" (pour indiquer qu'une vue doit être affichée), la Preview 3 du framework MVC d'ASP.NET permet de retourner un "JsonResult" (pour des scénarios de sérialisation JSON AJAX),  un "ContentResult" (pour le contenu sans vue) ou encore HttpRedirect et RedirectToAction/Route.

L'approche ActionResult est extensible (permet de créer votre propre type de retour) et vous verrez apparaître d'autres types de retour dans les prochaines versions.

Amélioration des méthodes d'aide HTML

Les méthodes d'aides à la manipulation du HTML ont été mise à jour dans la Preview 3 du Framework ASP.NET MVC. En plus de quelques bugs qui ont été corrigés, il y a de nouvelles fonctionnalités assez utiles.

Lookup automatique

Dans les précédentes version de la preview, vous deviez toujours explicitement passer une valeur pour l'afficher à l'aide des Helper HTML. Par exemple, vous procédiez comme ceci :

image

Vous pouvez toujours procéder de cette manière mais vous avez maintenant la possibilité de simplifier l'écriture :

image

Les HTML Helper vont maintenant directement rechercher dans le ViewData ou dans le Model avec la clef "ProductName" pour trouver la valeur.

SelectList et MultiSelectList ViewModels

Les nouvelles classe SelectList et MultiSelectList ont été inclues pour faciliter la création de dropdownlist ou multi-listbox HTML (avec la gestion de l'élement courant etc.). Une approche qui peut être utilisée pour générer des formulaires de façon plus propre. Vous devez, pour cela, déclarer le nouvel objet et le passer dans le ViewData pour l'afficher dans la vue.

Par exemple, ci-dessous, nous allons créer un objet SelectList avec une liste d'identifiants de catégories provenant d'une base de données. Nous indiquons que nous utiliserons "CategoryID" pour la valeur et "CategoryName" pour le texte qui sera affiché. On défini également l'ID par défaut :

image

Dans notre vue, nous n'avons besoin que d'utiliser le code suivant pour afficher notre "drop-downlist" avec le SelectList que nous avons déclarer dans notre ViewData :

image

A l'exécution, cela rendra :

image

image

Les scénarios de validation ne sont pas encore inclut avec nos HTML Helpers (vous devez écrire votre propre code pour la validation) mais cela sera inclut prochainement pour rendre la créations de pages d'éditions plus facile.

Vous devriez voir également apparaître des méthodes d'aides pour ASP.NET Ajax pour faciliter l'intégration d'Ajax dans ASP.NET MVC.

Amélioration de l'URL Rooting

La Preview 3 d'ASP.NET MVC inclue un grand nombre d'améliorations concernant le système de routage. C'est l'une des fonctionnalités les plus essensielles lorsqu'on parle de modèle MVC, c'est pour cette raison que nous mettons un focus dessus depuis les premières versions. Notre nouveau moteur de routage sera délivré avec la SP1 du .NET 3.5 cet été et supportera le Web Forms et les requêtes MVC. ASP.NET MVC contiendra également sa propre version de la librairie. Vous pourrez donc l'utiliser sur des systèmes qui n'ont pas le SP1.

Voici une série d'amélioration de la Preview 3 :

Les méthodes Helpers MapRoute() et IgnoreRoute()

On retrouve dans ASP.NET MVC les nouvelles méthodes d'aide "MapRoute" et "IgnoreRoute" qui peuvent être utiliser pour facilité l'enregistrement de règle de routage. MapRoute() permet d'ajouter des règles de routage à la collection de Routes très facilement. IgnoreRoute() permet d'indiquer au système de routage d'arrêter de traiter certain pattern d'URL (par exemple les handler axd, les ressources ASP.NET qui sont utilisées pour fournir du JavaScript, des images etc.).

Ci-dessous un exemple de démonstration dans la méthode RegisterRoutes du Global.asax :

image

La méthode MapRoutes() est surchargée  et prend deux, trois ou quatre paramètres (le nom de la règle, la syntaxe de l'URL, le paramètre de l'URL par défaut, et les paramètre d'URL optionnels).

Vous pouvez appeler MapRoute() autant de fois que vous le voulez pour enregistrer plusieurs règles de routages dans le système. Par exemple, en plus des conventions par défaut, vous pouvez ajouter des règles nommée comme ci-dessous :

image

On peut explicitement indiquer que vous voulez générer un lien qui utilise cette règles dans votre vue. Par exemple, nous pourrions utiliser Html.RouteLink de la manière suivante en passant la catégorie "food" comme paramètre à notre contrôleur :

image

  Ce vue affichera donc un lien qui respecte la règles de routage que nous lui avons passée avec la catégorie et affichera le code HTML suivant :

image

Nous pouvons également utiliser Url.RouteUrl(routeName, values) si vous voulons juste récupérer une URL correspondant à une règle nommée (sans avoir les balises <a> etc.)

De plus, nous pourrions appeler la méthode RedirectToRoute(routeName, values) dans notre contrôleur si nous voulions rediriger l'utilisateur en utilisant une règle d'URL désignée par "routeName".

Plus de fonctionnalité pour le routage

La Preview 3 d'ASP.NET MVC supporte également toute une série de nouvelles fonctionnalités. Vous pouvez maintenant inclure les caractère "-", ".", "," ,";" comme part de votre URL.

Par exemple, utiliser "-" dans l'URL pour facilité le parsing de la langue et de la localisation :

image

Cela passera les paramètres appropriés correspondant à la langue, à la localisation et à la catégorie au contrôleur.

Règle Exemple Paramètres reçus
{language}-{locale}/products/browse/{category} /en-us/products/browse/food language=en, locale=us, category=food
  /en-uk/products/browse/food language=en, locale=uk, category=food

Vous pouvez également utiliser le "." pour les extensions de fichiers pour savoir quel rendu vous devez afficher (hml, xml, etc.) :

image

La catégorie et le format seront passé au contrôleur (ProductController.Browse).

Règle Exemple Paramètres reçus
products/browse/{category}.{format} /products/browse/food.xml category=food, format=xml
  /products/browse/food.html category=food, format=html

La Preview 3 d'ASP.NET MVC supporte également les URL avec du contenu :

image

Cela passera un  paramètre "contentURL" dans notre  méthode de contrôleur WikiController.DisplayPage.

Règle Exemple Paramètres reçus
Wiki/Pages/{*contentUrl} /Wiki/Pages/People/Scott contentUrl="People/Scott"
  /Wiki/Pages/Countries/UK contentUrl="Countries/UK"

Ceci est assez utile lorsque vous créez des blogs, cms ou encore des Wiki.

Résumé

La Preview 3 inclue une lot de nouvelles fonctionnalités et de remaniement. Nous commençons à voir juste à propos du routage des URL et du modèle de programmation des contrôleurs. Nous sentons que ces choses commencent à être bien. Dans la prochaine version vous verrez apparaître plus d'amélioration dans ce qui concerne les vues (html helpers, règles de validation, etc.), Ajax, sous contrôleurs, système de login, authentification, autorisations d'accès, le cache et le scaffolding des données.

J'espère que cela aide,

Loïc Bar - Article basé sur celui de Scott Guthrie.

Published Wednesday, June 11, 2008 10:45 AM by loicbar
Filed under: , , ,

Comments

# The ASP.NET MVC Information Portal

Saturday, June 14, 2008 2:25 PM by The ASP.NET MVC Information Portal

Pingback from  The ASP.NET MVC Information Portal

Leave a Comment

(required) 
(required) 
(optional)
(required)