2008-12-15 13 views
8

Estoy trabajando en un sitio de MVC que es el primero que mi compañía ha hecho, una de las cosas que me encuentro haciendo mucho es crear listas de selección en un controlador, ponerlas en viewdata y leerlas ellos al crear un html.DropDownList. hay algunas cosas que me parecen malolientes sobre la forma en que lo hago.uso de la lista de selección en asp.net mvc

  1. algunas páginas pueden repetir listas de cosas (la tasa bordo de una habitación de hotel wheer un usuario puede añadir tantas habitaciones de un hotel, ya que necesitan), actualmente utilizo el mismo selectlist, es esta buena práctica o ¿Deberían tener uno cada uno?

  2. con el ejemplo anterior la "sala" es una ascx representada por un renderpartial o una llamada ajax a través de jquery. ¿Cuál es la mejor manera para que el controlador pase la lista de selección para que la ascx pueda usarla, actualmente agregué los viewdata para la página, que pasa sus viewdata al renderpartial, pero luego en la llamada ajax el método de acción también debe agregarse la lista de selección para Viewdata para el ascx, no está seguro de que sea la mejor manera.

  3. Tengo un repositorio que contiene estos datos "estáticos" y regresa como una lista genérica, de modo que cada vez que el controlador necesita los datos, llega al repositorio de la lista (hay algunos más que solo tasa de placa, cosas como títulos para personas, mr, mrs, etc.). Sospecho que algún tipo de caché sería mejor ya que los datos raramente cambian.

¿Alguien tiene algún consejo en estas áreas?

Respuesta

3
  1. Si esas listas de selección son completamente iguales, entonces estoy seguro de que es mejor usar una lista para varias DropDownLists.

  2. Parece que es de uso común. También estoy usando el enfoque similar, pero estoy pensando en transferir algunos de los controles a Html.RenderAction, porque pasar a través de ViewData de la página para controlar no me parece bien. Sí, sé que no será MVC puro :)

  3. Si su ORM admite caché, por supuesto, úselo.

Pero también si su proyecto no es pequeño y que creo que va a seguir creciendo, lo recomiendo a aplicar una capa de servicio (patrón PoEAA) por encima de los repositorios que se contiene la lógica de negocio y la lógica de gestión de la caché también.

Si desea administrar su caché de forma transparente, sin afectar a su capa dal o mvc, creo que lo mejor es usar AOP.

+0

OK. Es pequeño e inmutable, ¿cómo puedo guardarlo en caché fácilmente? – Shimmy

0

Una forma de hacerlo es colocar los datos que necesita para la lista de selección en su modelo a través de una vista mecanografiada. La vista puede iterar sobre los datos en el modelo para generar cualquier lista de selección que necesite. También puede rellenar un objeto directamente en la colección ViewData, pero creo que tener una vista mecanografiada da como resultado un código mucho más limpio.

Cuestiones relacionadas