Mi chiedo, perché tutti hates ViewData così tanto?
Lo trovo abbastanza utile e conveniente. Vi dico perché: in genere ogni azione del controller ha il proprio ViewModel, quindi viene usata solo una volta e trovo molto noioso modificare la classe ViewData ogni volta che ho bisogno di aggiungere una porzione extra di dati da visualizzare (aggiungendo un campo aggiuntivo alla classe di solito porta a modificando il suo costruttore). Invece posso scrivere nel controllorePerché tutti odiano ViewData?
ViewData["label"] = someValue;
// in mvc 3 even better:
ViewData.Label = someValue
e in vista
<%= ViewData["label"] %>
<%-- mvc 3: --%>
<%= ViewData.Label %>
o per tipi complessi:
<% ComplexType t = (ComplexType)ViewData["label"]; %> // and use all benefits of strong typing
<%= t.SomeProperty %>
Scrivi azione di controllo non devo passare ad un'altra classe, quando Ho bisogno di aggiungere alcuni dati per la visualizzazione. E un grande più per me: non allagare il tuo progetto con classi prive di senso e il passaggio tra loro e gli altri.
Sono d'accordo che l'uso di "stringhe magiche" potrebbe portare a errori che non vengono catturati dal compilatore, ma questi errori sono localizzati in una parte molto piccola del codice e possono essere scoperti molto rapidamente. Inoltre, come pensi che i ragazzi che lavorano con linguaggi dinamici (rotaie, django) vivano senza una forte digitazione?)
Qual è la tua opinione sull'utilizzo di ViewData?
+1 per il coraggio. –
Meh, sta solo cercando di scegliere una lotta con il consenso. - Il RoR, il confronto con Django non è giusto. Se hai uno strumento (il compilatore) per assicurarti che il tuo codice sia di migliore qualità, perché non usarlo? i RoR, i ragazzi di Django (e mi diletto in quelli) probabilmente hanno un sacco di errori di battitura stupidi che non riesco a ottenere con C#. – jfar