7

Ho un ASP.NET MVC 4 App che utilizza le jQuery.validation.js di plugin e di MVC jQuery.validation.unobtrusive. js. Uso le annotazioni dei dati sul mio modello di visualizzazione per convalidare l'input di una casella di testo come un numero intero.jQuery.Validation.Unobtrusive cliente validazione lato funziona solo quando gli script sono sulla visualizzazione di una pagina

Questo (nested) Vista viene caricato all'interno di una vista padre utilizzando ...

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

Uno il primo caricamento della pagina iniziale che, validazione lato client funziona. Ma qualsiasi ricarico della vista annidata con una chiamata ajax, la validazione lato client non funziona più. Perché?

Aggiornamento: (Esempio di codice dalla soluzione di webdeveloper sotto)

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

Esempio:

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

risposta

10

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

convalida si applica su document ready, quando la pagina rinfrescante si dovrebbe validazione init manualmente per la tua forma.

Ti piace questa:

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

stessa domanda: jquery.validate.unobtrusive not working with dynamic injected elements

+1

Grazie! Inoltre noto che è possibile risolvere questo problema aggiungendo esplicitamente i tag dello script nella vista nidificata, invece di fare affidamento sugli script resi dalla pagina Master. – duyn9uyen

+0

http://stackoverflow.com/questions/16310448/mvc4-custom-unobtrusive-validator-isnt-working qui è un buon punto da controllare – Andrei