2012-09-19 10 views
9

Używam sprawdzania poprawności knockout.js z MVC 4. Potrafi wykonać sprawdzanie poprawności strony klienta z funkcją sprawdzania nokautu. Muszę jednak upewnić się, że wszystkie wizje wysyłane do mojego kontrolera są prawidłowe. Dlatego też ręcznie sprawdzam po stronie serwera widoków moich modeli widoku i zwracam numer seryjny modelu jako JSON (współpracownik napisał prostą funkcję, aby to zrobić). Mój problem polega na tym, że chciałbym się dowiedzieć, w jaki sposób użyć sprawdzania poprawności knockout do spożywania serializowanej nazwy seryjnej JSON w celu generowania błędów.Czy mogę ręcznie dodawać komunikaty o błędach w sprawdzaniu poprawności nokautu?

Czy istnieje sposób ręcznego dodawania błędów i komunikatów do sprawdzania poprawności?

+0

Poprosiłem następujące pytanie i dostałem dobrą odpowiedź http://stackoverflow.com/questions/9128530/how-do-i-get-modelstate-addmodel-error-to-bind-to-knockout- dynamically-created-v – GraemeMiller

+0

Dzięki - Widziałem to wcześniej, nie jestem do końca pewien, czy to jest to, czego chcę, ponieważ naprawdę próbuję przykleić wtyczkę do sprawdzania poprawności do wersji modelowej, która jest dostarczana z mvc za darmo. Dam mu kolejną lekturę, jak być może źle zrozumiałem? – bplus

Odpowiedz

12

Najnowsza wersja nokaut-walidacja ma następujące dodaje się do niej:

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

więc można używać tych ręcznie dodać błędów do obserwabli, ale podobnie jak inne pytanie, które Graeme połączonego miał asnwered istnieje nie są zbudowane w taki sposób, aby je zmapować.

To, co zrobiłem wcześniej, to błędy stanu modelu wyświetlania poniżej/powyżej formularzy, aby wyświetlić błędy sprawdzania poprawności po stronie serwera, a sprawdzanie ko obsługuje całą stronę klienta, obok błędów typu wejściowego. znacznie łatwiejsze niż wymyślanie złożonego schematu mapowania, szczególnie jeśli masz złożone dane formularzy.

10

Oprócz tego, co powiedział Kevin, musiałem zadzwonić pod numer isModified, aby komunikat rzeczywiście się wyświetlił. Myślę, że to dlatego, że zmieniłem niektóre ustawienia domyślne, kiedy pojawią się wiadomości.

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

Jest to przydatne. Myślę, że dzieje się tak dlatego, że błędy nie są wyświetlane, dopóki nie uruchomi się procedura sprawdzania poprawności. Modyfikowanie wartości lub sprawdzanie poprawności grupy spowoduje zatwierdzenie i spowoduje wyświetlenie poprzednio ustawionego błędu. –

Powiązane problemy