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 ?