net mvc isvalid for dataannotations data custom bootstrap asp annotation asp.net-mvc validation model

asp.net-mvc - mvc - model validation c#



Moving Validation, Html Helpers para Service Layer en MVC (1)

Primero, para responder a su pregunta de dónde colocar esos códigos

  1. Ver validaciones del modelo
    Si no hay una razón particular para usar la validación del modelo de la capa de servicio, prefiero recomendarle que haga la validación del modelo utilizando anotaciones de datos dentro de la biblioteca del modelo. Todo lo que tiene que hacer es agregar algunos atributos a las propiedades de sus entidades y todo saldrá de la caja, incluidos los mensajes de validación (si agrega elementos de validación utilizando Html.ValidationMessageFor() o similar) en la vista lateral del cliente.

  2. Clases de HTML Helper
    Las clases de HTML Helper deben ser parte de la biblioteca Common UI si se supone que deben compartirse. No pertenecen a ninguna de las capas existentes, porque todas ellas son independientes de la capa de presentación (aplicaciones web). Supongo que tus ayudantes de HTML serán dependientes de la capa de presentación, por lo tanto, una biblioteca independiente sería suficiente.

  3. Funciones comunes
    Dependiendo de dónde necesite usar funciones comunes, también pueden ser parte de la biblioteca de modelos o la capa de servicio.

Cómo estructurar mis aplicaciones web

Los siguientes están escritos como capas. Por supuesto, son proyectos separados en la solución completa, por lo que se convierten en ensambles separados.

  1. Capa de objetos : contiene todas las clases / enums / interfaces comunes, la funcionalidad general y los POCO de modelo de aplicación utilizados por cualquier capa; por eso es referenciado por todas las otras capas

  2. Capa de datos : tiene objetos de acceso a los datos (que también pueden heredarse de las POCO en la capa de Objetos) que solo se utilizan dentro de esta capa y realizan el mapeo desde y hacia las POCO de la capa de aplicación; También hay repositorios en esta capa, por lo tanto, esta capa / ensamblado se referencia en la siguiente capa (servicio)

  3. Capa de servicios : contiene lógica de negocios y manipula clases de modelos de aplicaciones; obtiene datos de la capa de presentación y utiliza la capa de datos para manipular los datos en la tienda de respaldo (donde sea que esté; esto es, por supuesto, parte del depósito de la capa de datos para comunicarse con la tienda)

  4. Capa de presentación : puede ser una aplicación web o cualquier otra cosa; hace referencia a la capa Objetos y Servicios para que pueda comunicarse; cualquier objeto que sea solo capa de presentación también se crea aquí (modelos de vista especiales requeridos por vistas pero no por servicios);

Todo esto significa que mi capa Objetos proporciona medios de comunicación entre capas al proporcionar clases comunes que se usan para intercambiar datos entre capas.

En los casos en que hay otros proveedores que necesito implementar, pueden formar parte de una capa separada, pero la capa superior funciona para el 90% de todas las aplicaciones. Un buen ejemplo sería una biblioteca común que se reutiliza en diferentes aplicaciones. Dependiendo de lo que proporcione la biblioteca, se hace referencia a esas capas / ensambles que necesitan su funcionalidad.

En el caso de que tenga dos aplicaciones web, crearía una capa especial llamada Presentación donde estaría toda la funcionalidad HTML común y luego la referenciaría en ambas aplicaciones web.

Tenemos dos aplicaciones web en una solución MVC, una para escritorio y la otra para la versión móvil.

La arquitectura se ve así:

  • Modelo Libraray (incluido repositorio y modelo DB)
  • Capa de servicio (lógica de negocios)
  • Proyecto de aplicación web (vistas, controlador, viewModels para escritorio)
  • Proyecto web móvil (vistas móviles, controlador, viewModel)

Agregué una capa de servicio en este proyecto http://www.asp.net/mvc/tutorials/validating-with-a-service-layer-cs ).

siempre que estos dos proyectos web tengan un controlador diferente pero la lógica más común, los siguientes pueden pasar a la capa de servicio.

  • Clases de HTML Helper
  • Ver validaciones del modelo
  • Funciones comunes

Gracias por adelantado.