S’il y avait une seule fonction que je voudrais voir dans ASP.NET MVC 4, ce serait de voir supprimer/déprécier les ViewBag et ViewData.
Ces deux concepts conduisent à du code très laid selon mon point de vue.
Voici ce que je déteste le plus dans les ViewBag et ViewData :
- Ils ne sont pas fortement typés et vous devez effectuer un Cast dans vos vues afin d’obtenir le type réel
- Ils ne sont pas refactorisables car ils s’appuient sur les « magic strings »
- Ils conduisent à des tests unitaires fragiles en raison des « magic strings »
- Ils conduisent au code spaghetti dans les vues
Voici le patch de diff, que je serais ravi de voir appliqué pour la classe ViewDataDictionary.cs dans ASP.NET MVC 4 :
diff --git ViewDataDictionary.cs ViewDataDictionary.cs index 4c6299f..1965e3e 100644 --- ViewDataDictionary.cs +++ ViewDataDictionary.cs @@ -95,12 +95,10 @@ namespace System.Web.Mvc { public object this[string key] { get { - object value; - _innerDictionary.TryGetValue(key, out value); - return value; + throw new Expcetion("Don't use ViewData"); } set { - _innerDictionary[key] = value; + throw new Expcetion("Don't use ViewData"); } }
Et vous qu’en pensez-vous ?