Automatycznie generowane walidatory client-side w ASP.NET są spoko – minimalnym nakładem pracy (dodanie atrybutu Required, StringLength, RegularExpression itd na właściwości modelu oraz jednolinijkowej instrukcji <% Html.EnableClientValidation(); %> w widoku) otrzymujemy informacje o błędnych danych bez wycieczki na serwer. Co jednak w przypadku, gdy chcemy sami obsłużyć/zablokować wysyłanie danych na serwer? Sporo się naszukałem, zanim udało mi się znaleźć sposób na sprawdzenie poprawności wpisanych przez użytkownika wartości inaczej niż poprzez kliknięcie przycisku Submit().
Kupa mięci, oto funkcyjka zwracająca poprawność aktualnych wartości pól:
1: function formValid(form) { 2: var validationContext = form[0]['__MVC_FormValidation']; 3: var validationErrors = validationContext.validate('submit'); 4: return validationErrors.length == 0; 5: }
Wykorzystanie z jQuery:
1: $('form').live('submit', function() { 2: var form = $(this); 3: var isValid = valUtils.formValid(form); 4: if (isValid == false) { 5: return false; 6: } 7: 8: // ...submit logic...