2012-09-19 9 views
9

Estoy usando knockout.js y la validación del golpe de gracia con MVC 4. Puedo realizar la validación del lado del cliente bien con la validación del knockout. Sin embargo, debo asegurarme de que cualquier modelo de vista publicado en mi controlador sea válido. Por lo tanto, validaré manualmente los modelos de mi vista del lado del servidor y devolveré el estado modelo serializado como JSON (un compañero de trabajo escribió una función simple para hacer esto). Mi problema es que me gustaría usar de alguna forma el uso de la validación knockout para consumir el modelo de estado JSON serializado para generar errores.¿Puedo agregar manualmente mensajes de error en la validación de knockout?

Entonces, ¿hay alguna forma de agregar manualmente errores y mensajes en la validación del knockout?

+0

me hizo la siguiente pregunta y nos dieron una buena respuesta http://stackoverflow.com/questions/9128530/how-do-i-get-modelstate-addmodel-error-to-bind-to-knockout- dynamically-created-v – GraemeMiller

+0

Gracias - Lo había visto antes, no estoy exactamente seguro de si es lo que quiero, ya que estoy tratando de pegar el complemento de validación de knockout para modelar cosas que vienen con mvc de forma gratuita. Le daré otra lectura ya que puedo haber entendido mal? – bplus

Respuesta

12

La última versión nocaut validación tiene las siguientes añadido a la misma:

//manually set error state 
observable.setError = function (error) { 
    observable.error = error; 
    observable.__valid__(false); 
}; 

//manually clear error state 
observable.clearError = function() { 
    observable.error = null; 
    observable.__valid__(true); 
} 

para que pueda usarlos para añadir manualmente los errores de sus características observables, pero al igual que la otra pregunta que Graeme ligado había asnwered, hay no construido en forma de mapearlos.

Lo que he hecho antes es simplemente mostrar los errores de estado del modelo debajo/encima de los formularios para mostrar los errores de validación del lado del servidor, y tener la validación de ko manejar todo el lado del cliente, junto a los errores de tipo de entrada. es mucho más fácil que crear un esquema de mapeo complejo, especialmente si tiene datos de formularios complejos.

10

Además de lo que dijo Kevin, encontré que necesitaba llamar al isModified para que el mensaje realmente se mostrara. Creo que esto se debe a que cambié algunas configuraciones predeterminadas para cuando aparezcan los mensajes.

observable.setError('Your password is incorrect'); 
observable.isModified(true); 
+0

Esto es útil. Creo que esto se debe a que los errores no se muestran hasta que se activa la rutina de validación. La modificación del valor o la validación de un grupo activará la validación y hará que aparezca el error previamente establecido. –

Cuestiones relacionadas