2011-12-06 18 views
14

Il modulo HTML è controllato utilizzando i modelli Knockout JS e jQuery. La convalida di jQuery di base è in uso per convalidare i campi. Il modulo viene serializzato su JSON e inviato all'azione del controller MVC utilizzando AJAX. L'azione del controller MVC esegue la convalida del modello sul lato server, aggiunge errori a ModelState.Visualizza errori utilizzando Knockout JS + MVC + Convalida modello lato server?

  1. Qual è la prassi migliore per tornare quegli errori al cliente - iterazione attraverso errori di ModelState e aggiungendoli alla raccolta chiave/valore di errori nella risposta JSON?

  2. Come si visualizzano errori sul client? Come si "lega" la collezione di errori chiave/valore ai campi rilevanti sul modello?

Dire che c'è un campo "nome" sul modello, con una casella di testo corrispondente resa dal template jQuery. Come si accetta l'errore per il campo "nome" nella raccolta di errori e si visualizza il messaggio di errore sotto la casella di testo "nome"?

risposta

5

Ci sono due plugin di convalida per ko.js (found here) che potrebbe aiutare,

Knock-Knock validation

Knockout Validation

è possibile collegare uno di quelli per i dati di validazione unobstrsive MVC iniettati lato client.

+10

Dopo aver esaminato la seconda opzione (Knockout Validation) mi chiedevo come sarebbe possibile mappare gli attributi di convalida da un modello di visualizzazione MVC al metodo .extend() in Knockout? – Ryan

4

Se si utilizza MVC, javascript discreto esegue la convalida lato client in base al set di convalida nel modello. Non è necessario eseguire alcuna configurazione aggiuntiva.

Detto questo, non esiste un modo diretto per eseguire la convalida lato client in base al modello utilizzando javascript e knockoutjs.

Ci sono un paio di modi per farlo sul lato client.

  1. Jquery o qualsiasi altro framework di convalida può eseguire la convalida. Ma devi avere un tag. Vantaggio con questo approccio è il tuo codice sarà semplice e facile da mantenere.
  2. È possibile eseguire la convalida personalizzata lato client utilizzando javascript e associare i messaggi di convalida tramite knockout. Ciò richiede di creare etichette di errore per ciascuna variabile di input. Vantaggio di questo approccio è che avrete il controllo completo su come e cosa deve essere visualizzato.

Personalmente, ho avuto requisiti simili in uno dei progetti recenti e l'ho raggiunto utilizzando controlli di convalida personalizzati ed etichette di errore.

Problemi correlati