Mam aplikacji ASP.NET MVC 4 który używa jQuery.validation.js wtyczek i MVC za jQuery.validation.unobtrusive. js. Używam adnotacji danych w moim modelu widoku, aby sprawdzić, czy dane wejściowe pola tekstowego są liczbą całkowitą.jQuery.Validation.Unobtrusive walidacja po stronie klienta działa tylko wtedy, gdy skrypty są na widoku strony
To (zagnieżdżone) widok jest ładowany w widoku macierzystego, używając ...
<% Html.RenderPartial("New"); %>
Jeden pierwszy inital ładowania strony, działa sprawdzanie poprawności po stronie klienta. Ale jakiekolwiek ponowne wczytanie zagnieżdżonego widoku za pomocą wywołania ajax, sprawdzanie poprawności po stronie klienta już nie działa. Dlaczego?
Aktualizacja (przykład kod z Webdeveloper za roztworu poniżej)
$.validator.unobtrusive.parse($('form'));
Przykład:
var saveAndUpdate = function (url) {
var myForm = $('form', $('#TheDivThatContainsTheNewHTML'));
$.ajax({
url: url,
type: 'POST',
data: myForm.serialize(),
success: function (result) {
$('#TheDivThatContainsTheNewHTML').html(result);
$.validator.unobtrusive.parse($('#TheDivThatContainsTheNewHTML'));
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
},
dataType: 'html'
});
}
Dzięki! Zauważam również, że możesz rozwiązać ten problem, dodając jawnie znaczniki skryptów w widoku zagnieżdżonym, zamiast polegać na skryptach renderowanych przez stronę wzorcową. – duyn9uyen
http://stackoverflow.com/questions/16310448/mvc4-custom-unobtrusive-validator-isnt-working tutaj jest dobry punkt, aby sprawdzić również – Andrei