Je me demande, pourquoi tout le monde hates ViewData? Je trouve cela très utile et pratique. Je vous dis pourquoi: typiquement chaque action de contrôleur a son propre ViewModel, donc il est utilisé une seule fois et je trouve très fastidieux de modifier la classe ViewData chaque fois que j'ai besoin d'ajouter une portion de données à afficher. modifier son constructeur). Au lieu de cela, je peux écrire dans le contrôleurPourquoi tout le monde déteste ViewData?
ViewData["label"] = someValue;
// in mvc 3 even better:
ViewData.Label = someValue
et vue
<%= ViewData["label"] %>
<%-- mvc 3: --%>
<%= ViewData.Label %>
ou pour les types complexes:
<% ComplexType t = (ComplexType)ViewData["label"]; %> // and use all benefits of strong typing
<%= t.SomeProperty %>
Rédaction d'une action du contrôleur, je ne dois pas passer à une autre classe, lorsque Je dois ajouter quelques données à voir. Et un gros plus pour moi: ne pas inonder votre projet avec des classes insensées et basculer entre eux et les autres.
Je suis d'accord que l'utilisation de "chaînes magiques" pourrait conduire à des erreurs qui ne sont pas attrapées par le compilateur, mais ces erreurs localisées dans une très petite partie du code et peuvent être découvertes très rapidement. D'ailleurs, comment pensez-vous que les gars qui travaillent avec des langages dynamiques (rails, django) vivent sans avoir à taper du tout?)
Comment jugez-vous l'utilisation de ViewData?
+1 pour acte de bravoure. –
Meh, il essaie juste de se battre avec un consensus. - La comparaison RoR, Django n'est pas juste. Si vous avez un outil (le compilateur) pour vous assurer que votre code est de meilleure qualité, pourquoi ne pas l'utiliser? le RoR, les gars de Django (et je m'y mets) ont probablement beaucoup d'erreurs typo stupides que je n'obtiens pas avec C#. – jfar