Archive

Articles taggués ‘ASP.NET MVC’

ASP.NET MVC : comment fournir les donnees depuis le controleur

Voici une question qui revient régulièrement lorsque j’interviens sur des projets.

En avant-propos, vous trouverez ici l’article de la msdn qui présente partiellement le problème. Ce qu’il faut retenir :

  • besoin d’afficher une vue liée à une classe du modèle ? une vue fortement typée vous apportera de la productivité via la complétion. La compilation des vues, si vous l’activez, vous apportera de la sérénité dans le refactoring. Les étapes :
    • définir une action du contrôleur qui récupère une instance de la classe du modèle cible et qui transfère cette instance à la vue. On peut utiliser par exemple la méthode View(object). L’objet passé en paramètre correspond à l’instance du modèle.
    • définir une vue fortement typée. Généralement, on utilise la directive  @model dans la vue Razor pour définir le type du modèle qui sera utilisé. Cette instruction permet d’utiliser la propriété WebViewPage.Model et d’avoir la complétion (WebViewPage<T> est un générique).
  • besoin d’afficher une vue générique, non liée à une classe du modèle ? une vue faiblement typée apportera simplicité (moins de classe) et/ou dynamicité (possibilité de fournir à la vue des données issues d’une introspection). Les options :
    • utilisation du dictionnaire de données WebViewPage.ViewData. Il s’agit d’un dictionnaire dans lequel les données sont identifiées par une clé de type « magic string ».
    • utilisation du type dynamic avec la propriété WebViewPage.ViewBag. Ce principe a pour conséquence d’alléger la syntaxe  du dictionnaire.

Techniquement il est possible de mixer les approches (vue fortement typée + vue faiblement typée), mais n’est-ce pas le reflet d’un problème de conception ?

http://msdn.microsoft.com/fr-fr/library/dd394711%28v=VS.98%29.aspx
Categories: .NET Tags:

Sortie de ASP.NET MVC 2

Un an après la sortie de la première version, ASP.NET MVC est disponible en version 2.

ASP.NET MVC propose une alternative aux WebForms suivant une architecture MVC. Cette approche a des avantages et des inconvénients  : on aime ou n’aime pas. Personnellement, je n’adhère pas à l’approche helper qui mélangent des balises ASP.NET dans le code Html. Néanmoins, une des fonctionnalités de la version 2 mérite attention : les helpers sont maintenant typés et l’on peut utiliser des expressions lambda à la place des magic string.

En ASP.NET MVC 1, pour définir un champ input lié à une propriété Nom d’un modèle , on avait quelque chose de ce genre:
<%= Html.TextBox("Name", Model.Name) %>

Pour le même résultat en ASP.NET MVC 2, on utilise
<%= Html.TextBoxFor( m => m.Name) %>

L’annonce de Scott Guthrie.

Categories: .NET Tags: , ,