7

Ich habe einen ASP.NET MVC 4 App, die die jQuery.validation.js Plugin und MVC jQuery.validation.unobtrusive verwendet. js. Ich verwende Datenannotationen in meinem Ansichtsmodell, um die Eingabe eines Textfelds als Ganzzahl zu validieren.jQuery.Validation.Unobtrusive Clientseite Validierung funktioniert nur, wenn Skripte auf Ansichtsseite ist

Diese (verschachtelte) Ansicht innerhalb einer übergeordneten Ansicht geladen wird mit ...

<% Html.RenderPartial("New"); %> 

Einer der ersten inital Seite zu laden, Client-seitige Validierung funktioniert. Beim erneuten Laden der verschachtelten Ansicht mit einem Ajax-Aufruf funktioniert die clientseitige Validierung jedoch nicht mehr. Warum das?

aktualisieren: (Code-Beispiel aus unter-Lösung webdeveloper)

$.validator.unobtrusive.parse($('form')); 

Beispiel:

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

Antwort

10

But any reloading of the nested view with an ajax call, client side validation no longer works. Why is that?

Validierung gilt auf document ready, wenn Sie erfrischende Seite sollten Sie Validieren Sie die Validierung manuell für deine Form.

So:

$.validator.unobtrusive.parse("form"); 

Gleiche Frage: jquery.validate.unobtrusive not working with dynamic injected elements

+1

Dank! Ich stelle außerdem fest, dass Sie dies beheben können, indem Sie die Skript-Tags explizit in die verschachtelte Ansicht einfügen, anstatt sich auf die Skripts zu verlassen, die von der Masterseite gerendert werden. – duyn9uyen

+0

http://stackoverflow.com/questions/16310448/mvc4-custom-unobtrusive-validator-istnt-working hier ist ein guter Punkt auch zu überprüfen – Andrei

Verwandte Themen