2009-11-02 32 views
8

Tengo algunos controladores aquí en el trabajo que contienen métodos que puedo usar en otros controladores.Código de uso compartido entre los controladores ASP.NET MVC

Consideré mover algunas de las funciones comunes a un controlador base del que podrían heredarse. El problema con esto es que tendría los métodos que necesito en controles base múltiples a los que no podría acceder. (Porque no podemos heredar de múltiples controladores base).

Mi otra idea es pasar la funcionalidad común a sus propias clases, fuera de la carpeta del Controlador.

¿Qué harías? ¿Existe una gran manera en ASP.NET MVC para compartir código como este que aún no conozco?

Respuesta

14

hay una regla general acerca de la programación orientada a objetos que usted debe composición sobre la herencia a favor, y que encaja muy bien en este escenario.

Haría uno o más servicios que encapsularan los métodos en cuestión y luego los consumiera desde los Controladores.

Para obtener puntos adicionales, extraiga una interfaz de los servicios en cuestión, e inyecte la interfaz en los Controladores para una máxima separación de preocupaciones.

+0

Tengo un escenario ligeramente diferente. Tengo varias aplicaciones web cuyos controladores de inicio de sesión tienen exactamente el mismo código. Las diferencias entre los sistemas de inicio de sesión de estas aplicaciones se limitan a sus archivos 'web.config'. Me gustaría tener una clase de controlador de inicio de sesión compartido en un proyecto separado al que las aplicaciones web harían referencia. ¿Es eso posible? – pyon

+0

Sí. Siempre codigo todos mis Controladores en bibliotecas separadas. –

+0

Agradable. ¿Y qué hay de las vistas? – pyon

4

Me gustaría tener en cuenta una clase de ayudante o algo así. De lo que usted ha descrito la funcionalidad ayuda a los controladores/

1

Las opciones parecen ser el controlador base o la clase auxiliar. Puede tomar el control de la creación del controlador e inyectar el ayudante en los controladores que lo necesiten.

Cuestiones relacionadas