Actualmente estoy usando ASP.NT MVC RC1 para implementar una aplicación básica de hojas de tiempo. Me gustaría seguir los principios DRY pero encontrarlo difícil en un caso particular:¿Cómo mantenerse SECO cuando la lógica necesita una implementación de C# y Javascript?
Una de mis vistas, una vista parcial en realidad, tiene una cantidad de cuadros de texto que representan el número de horas dedicadas a una tarea en particular, una cuadro de texto por día de la semana. Cuando inicialmente cargo la página, quiero un cuadro de texto en la vista para mostrar el total de todas esas horas. Además, quiero que ese total se actualice a medida que cambio los valores en los cuadros de texto. La actualización de los cuadros de texto no causa una devolución de datos completa, solo una devolución de datos de AJAX que no hace nada con los resultados (la devolución de datos actualiza el valor en el DB pero el retorno de resultado de acción es un resultado vacío ya que no hay nada que necesite actualizar en el UI).
Actualmente tengo el controlador crea una vista que se completa con el "total" para esa vista, por lo que la lógica que agrega todos los valores está en el controlador C#. En el lado de la interfaz de usuario, tengo javascript que actualiza el total en el nivel de UI. Pero esto no es bueno porque si cambio la lógica detrás de cómo se calcula ese total, ¡tengo que cambiarlo en dos lugares! AHH! ¡NO ESTA SECO!
Entonces, ¿cómo puedo hacer esto? La única respuesta que me llega hasta ahora es eliminar el código de javascript que calcula el total en la interfaz de usuario y en su lugar hacer que la devolución de datos de AJAX devuelva el nuevo "total" para esa vista.
¿Hay otros enfoques?
It * is * es un principio rector, no una ley. Si necesita la lógica en ambos lugares, y no es técnicamente factible compartir la misma implementación, tendrá que implementarla dos veces. Mala suerte, así es la vida. ;) – jalf
@jalf: exactamente. Una (cualquier) directriz no es una ley irrompible de la existencia. – Richard
OK, observado y modificado;) –