2011-12-06 30 views
14

El formulario HTML se controla con plantillas Knockout JS y jQuery. La validación jQuery básica está en uso para validar los campos. El formulario se serializa a JSON y se envía a la acción del controlador MVC utilizando AJAX. La acción del controlador MVC realiza la validación del modelo del lado del servidor y agrega errores a ModelState.Mostrar errores con Knockout JS + MVC + Validación de modelo del lado del servidor?

  1. Cuál es la mejor práctica para devolver esos errores al cliente - iteración a través de errores en ModelState y agregarlos a la recogida de llaves/valor de los errores en la respuesta JSON?

  2. ¿Cómo se muestran los errores en el cliente? ¿Cómo "vincula" la colección clave/valor de errores a campos relevantes en el modelo?

Supongamos que hay un campo "nombre" en el modelo, con un cuadro de texto correspondiente representado por la plantilla de jQuery. ¿Cómo se toma el error para el campo "nombre" en la colección de errores y se muestra el mensaje de error debajo del cuadro de texto "nombre"?

Respuesta

5

Hay dos plugins de validación para ko.js (found here) que podría ayudarle,

Knock-Knock validation

Knockout Validation

Puede conectar uno de aquellos a los datos de validación unobstrsive mvc inyectados lado del cliente.

+10

Después de mirar la 2da opción (Validación de exclusión) Me preguntaba cómo podría asignar los atributos de validación de un modelo de vista MVC al método .extend() en Knockout? – Ryan

4

Si está utilizando MVC, javascript no intrusivo realiza la validación del lado del cliente en función del conjunto de validación en su modelo. No necesita realizar ninguna configuración adicional.

Habiendo dicho eso, no hay una manera directa de realizar la validación del lado del cliente basada en el modelo usando javascript y knockoutjs.

Hay dos formas de hacerlo en el lado del cliente.

  1. Jquery o cualquier otro marco de validación puede realizar la validación. Pero debes tener una etiqueta. La ventaja de este enfoque es que su código será simple y fácil de mantener.
  2. Puede realizar la validación personalizada del lado del cliente utilizando javascript y enlazar los mensajes de validación usando knockout. Esto requiere que cree etiquetas de error para cada una de las variables de entrada. La ventaja de este enfoque es que tendrá un control completo sobre cómo y qué se debe mostrar.

Personalmente, tuve un requisito similar en uno de los proyectos recientes y lo logré usando comprobaciones de validación personalizadas y etiquetas de error.

Cuestiones relacionadas