Me pregunto, ¿por qué todos hates ViewData tanto?
Lo encuentro bastante útil y conveniente. Te digo por qué: típicamente cada acción del controlador tiene su propio ViewModel, así que solo se usa una vez y me resulta muy tedioso modificar la clase ViewData cada vez que necesito agregar una porción adicional de datos para ver (agregar campo extra a la clase generalmente conduce a modificando su constructor). En lugar Puedo escribir en el controlador¿Por qué todos odian ViewData?
ViewData["label"] = someValue;
// in mvc 3 even better:
ViewData.Label = someValue
y en vista
<%= ViewData["label"] %>
<%-- mvc 3: --%>
<%= ViewData.Label %>
o para tipos complejos:
<% ComplexType t = (ComplexType)ViewData["label"]; %> // and use all benefits of strong typing
<%= t.SomeProperty %>
Escribir una acción del controlador no tengo que cambiar a otra clase, cuando Necesito agregar algunos datos para ver. Y un big plus para mí: no inunda su proyecto con clases sin sentido y cambiando entre ellos y otros.
Estoy de acuerdo en que el uso de "cadenas mágicas" podría provocar errores que no son detectados por el compilador, pero estos errores se localizan en una parte muy pequeña del código y pueden descubrirse muy rápidamente. Además, ¿cómo crees que los chicos que trabajan con lenguajes dinámicos (rieles, django) viven sin una mecanografía fuerte?)
¿Cuál es su opinión sobre el uso de ViewData?
+1 por valentía. –
Meh, él solo está tratando de pelear con consenso. - La comparación de RoR, Django no es justa. Si tiene una herramienta (el compilador) para asegurarse de que su código sea de mejor calidad, ¿por qué no usarlo? el RoR, los chicos de Django (y yo incursiono en ellos) probablemente tengan muchos errores tontos que no entiendo con C#. – jfar