model view controller - campos - MVC: ¿dónde implementar la validación de formularios(en el lado del servidor)?
formulario mvc c# (4)
De la Wikipedia:
Model-view-controller (MVC) es un patrón arquitectónico utilizado en ingeniería de software. El uso exitoso del patrón aísla la lógica comercial de las consideraciones de la interfaz de usuario, lo que resulta en una aplicación donde es más fácil modificar el aspecto visual de la aplicación o las reglas comerciales subyacentes sin afectar al otro. En MVC, el modelo representa la información (los datos) de la aplicación y las reglas de negocio utilizadas para manipular los datos; la vista corresponde a elementos de la interfaz de usuario, como texto, elementos de casillas de verificación, etc. y el controlador maneja los detalles que involucran la comunicación al modelo de acciones del usuario, como las pulsaciones de teclas y los movimientos del mouse.
Por lo tanto, modelo: contiene la aplicación y las reglas comerciales.
Al codificar una aplicación MVC tradicional, ¿cuál es la mejor práctica para codificar las validaciones de formularios del lado del servidor? ¿El código pertenece al controlador o a la capa del modelo? ¿Y por qué?
Estoy completamente de acuerdo con Josh. Sin embargo, puede crear un tipo de capa de validación entre Controlador y Modelo para que la mayoría de las validaciones sintácticas se puedan llevar a cabo en los datos antes de que lleguen al modelo.
Por ejemplo,
La capa de validación validaría el formato de fecha, el formato de cantidad, los campos obligatorios, etc.
Para que ese modelo se concentre exclusivamente en las validaciones comerciales, como x cantidad, debe ser mayor que la cantidad.
Mi experiencia con MVC hasta ahora consiste en rieles por completo.
Rails hace su validación al 100% en el Modelo.
En su mayor parte, esto funciona muy bien. Yo diría que 9 de cada 10 veces es todo lo que necesitas.
Sin embargo, hay algunas áreas donde lo que envía desde un formulario no coincide con su modelo correctamente. Puede haber algún filtrado / reorganización adicional, etc.
La mejor manera de resolver estas situaciones que he encontrado es crear objetos de modelo falso, que básicamente actúan como objetos de Modelo, pero mapean de 1 a 1 con los datos del formulario. Estos objetos de falso modelo en realidad no guardan nada, solo son un cubo para los datos con validaciones adjuntas.
Un ejemplo de tal cosa (en rieles) es ActiveForm
Una vez que los datos entran en eso (y es válido), generalmente es un paso bastante simple transferirlo directamente a sus modelos reales.
La comprobación de sintaxis básica debe estar en el control a medida que traduce la entrada del usuario para el modelo. El modelo necesita hacer la validación de datos reales.