2008-08-30 10 views
9

Así que me estoy embarcando en un proyecto ASP.NET MVC y aunque la experiencia ha sido buena en general, no estoy tan satisfecho con el desastre de spaghetti en el que se han convertido mis controladores. He buscado en línea (CodeCampServer, etc ...) y todos parecen sufrir el mismo problema donde los métodos del controlador violan SRP (principio de responsabilidad única) de manera bastante consistente, como un método de controlador que simplemente muestra la vista si la solicitud es un GET pero actualiza el modelo si es un POST. Ahora tengo los métodos de controlador responsables de múltiples rutas lógicas en toda la aplicación, digamos que comprueba para qué botón se hizo clic en el formulario y actúa en consecuencia. Podría redirigir cada clic de botón a una acción de formulario diferente usando JavaScript, pero algo tampoco se siente allí ... El otro gran problema es la proliferación de cadenas mágicas: ViewData ["foo"] = blah; Para resumir, ¿cómo estructuran la lógica de su controlador? ¿Un objeto modelo gigante por vista? Un montón de pequeños métodos de control y JavaScript es el enrutador? Mi objetivo es el código mantenible - como características quedan apilados en que estoy empezando a deslizarse por esa pendiente resbaladiza ...ASP.NET MVC: Controladores de estructuración

Respuesta

8

ASP.NET Vista previa de 5 (disponible en CodePlex) tiene una respuesta para esto: el atributo [AcceptVerbs]. Phil Haack tiene una discusión blog post sobre cómo se usa.

En cuanto a la pregunta de la clave mágica de datos de vista, es un problema interesante. Si se piensa en una vista como un montón de componentes semi-independientes (especialmente a la luz del nuevo soporte vista parcial), a continuación, hacer un modelo inflexible de tipos se hace menos ideal, ya que las varias piezas de la vista deben ser relativamente independiente de unos y otros.

0

¿Cómo manejan las personas diferentes este problema? Sé que acabo de pasar un par de horas revisando el revoltijo dentro de la carpeta del modelo. Estoy descubriendo que la creación de carpetas es útil para reducir el desorden visual, el uso de espacios de nombres compatibles también ayuda.

Pero mis controladores son monolitos en este momento. el problema es que me he centrado en aprender hasta este punto en el proyecto (aún hay mucho por resolver).

que estoy recibiendo un buen control sobre MVC ahora, por lo que es hora de revisar la complejidad y considerar la modificación de los controladores arriba en funciones mejores y más limpias llamado.

¿Hay otras personas que dividen sus controladores en subcontroladores? (Si no hay tal cosa)

+0

El truco para la codificación de los controladores es mirar a ellos y decir 'si cada método de acción es cada vez más de 20 o 30 líneas o un número relativamente pequeño, ¿cómo puedo reducirlo?', Básicamente, manténgalo SECO y vuelva a pensar en lo que está haciendo y mueva esa lógica a una capa de SERVICIO adecuada, que pueda reutilizarse. –

+0

Además, descarga Kit StoreFront MVC arranque de ROB Conery y ver cómo está su solución en capas -> awesomesauce muy súper. (google it, no puedo molestarme en encontrar el enlace a esta hora tan tarde (¡¿temprano ?!) de la mañana ... ¡hth! –

Cuestiones relacionadas