2012-09-19 14 views
9

Sto utilizzando knockout.js e convalida a eliminazione diretta con MVC 4. Posso eseguire la validazione lato client con convalida ad eliminazione diretta. Tuttavia, devo garantire che tutti i viewmodels inviati al mio controller siano validi. Pertanto convalido manualmente i miei modelli di vista lato server e restituisco serialstato serializzato come JSON (un collaboratore ha scritto una semplice funzione per farlo). Il mio problema è che mi piacerebbe un po 'come usare la convalida ad eliminazione diretta per consumare lo stato del modello serializzato JSON per generare errori.Posso aggiungere manualmente i messaggi di errore nella convalida ad eliminazione diretta?

Quindi esiste un modo per aggiungere manualmente errori e messaggi nella convalida ad eliminazione diretta?

+0

ho chiesto alla seguente domanda e ottenuto una buona risposta http://stackoverflow.com/questions/9128530/how-do-i-get-modelstate-addmodel-error-to-bind-to-knockout- dynamically-created-v – GraemeMiller

+0

Grazie - L'ho già visto prima, non sono esattamente sicuro se è quello che voglio, dato che sto davvero cercando di incollare il pluggin di validazione ad eliminazione diretta per modellare materiale fornito con mvc gratuitamente. Darò un'altra lettura come potrei aver frainteso? – bplus

risposta

12

L'ultima versione knockout-convalida ha il seguente aggiunto ad esso:

//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); 
} 

in modo da poter utilizzare quelli per aggiungere manualmente gli errori ai vostri osservabili, ma come l'altra domanda che Graeme legata aveva asnwered, non v'è nessun modo costruito per mapparli.

Quello che ho fatto prima è solo visualizzare gli errori di stato del modello sotto/sopra i moduli per mostrare gli errori di convalida lato server, e avere la convalida ko gestire tutto il lato client, accanto agli errori del tipo di input. molto più facile rispetto a uno schema di mappatura complesso, specialmente se si dispone di dati di forma complessi.

10

In aggiunta a ciò che Kevin ha detto, ho trovato che dovevo chiamare isModified per mostrare effettivamente il messaggio. Penso che questo sia dovuto al fatto che ho modificato alcune impostazioni predefinite per quando vengono visualizzati i messaggi.

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

Questo è utile. Penso che questo sia dovuto al fatto che gli errori non vengono visualizzati finché non viene attivata la routine di convalida. La modifica del valore o la convalida di un gruppo attiverà la convalida e farà apparire l'errore precedentemente impostato. –

Problemi correlati