2010-04-19 21 views
5

Sto utilizzando la funzione di convalida client del framework MVC 2.0 (con Html.ValidationMessageFor() e Html.EnableClientValidation()).Convalida client ASP.NET MVC con viste parziali e Ajax

Tutto è bello, quando uso la convalida in una forma semplice.

Ma quando ottengo questo modulo tramite jQuery Ajax

$.get('PathToMyForm', function(htmlResult) { 
    $('selector').html(htmlResult); 
}); 

convalida del client non funziona. Perché?

+0

* Come * non funziona? I nuovi campi non sono convalidati? Nulla è convalidato? Dov'è il codice di convalida? Nel parziale? Nella pagina contenente? Sarebbe utile un po 'più di codice e spiegazione. – tvanfosson

+0

tvanfosson, Ho un modello con l'attributo [obbligatorio]. Nello scenario comune (senza AJAX, solo Html.RenderPartial) la convalida del client funziona correttamente - se scrivo una stringa vuota nella casella di testo e ci si concentra su un'altra casella di testo, viene visualizzato il messaggio di convalida. Ma con AJAX - Non ho ricevuto questo messaggio. – griZZZly8

risposta

0

Ho avuto problemi anche con la convalida MVC e le viste parziali. L'ho risolto usando jquery.validate.js invece della validazione client integrata. Puoi provarlo.

+0

jQuery.validate non può vedere il mio modello. Voglio definire le regole di validazione nelle classi di modelli. – griZZZly8

+0

Puoi farlo. Controlla i Futures MVC di ASP.NET http://aspnet.codeplex.com/releases/view/41742 –

0

Forse jQuery non sta valutando il codice JavaScript sulla risposta Ajax?

Prova utilizzando la proprietà dataType sulla chiamata Ajax,

$.get('PathToMyForm', {dataType 'html'}, function(htmlResult) { 
    $('selector').html(htmlResult); 
}); 

Dal jQuery documentation:

dataType predefinito: Indovina intelligente (XML, JSON, uno script o HTML)

Il tipo di dati che ci si aspetta dal server. Se nessuno è specificato, jQuery cercherà in modo intelligente di ottenere i risultati, in base al tipo MIME della risposta (un tipo XML MIME produrrà XML, in 1.4 JSON produrrà un oggetto JavaScript, in 1.4 lo script eseguirà lo script e qualsiasi cosa altrimenti verrà restituito come stringa).

+0

Rafael Mueller, grazie per la risposta, ma non mi aiuta. Ho incluso alert ('script test') nella mia vista parziale - funziona. Ma ho ancora problemi con la convalida. – griZZZly8

8

Se si utilizza jquery.validate (in particolare con MVC) e si sta caricando le pagine tramite la tecnologia AJAX, è necessario effettuare la seguente chiamata dopo il caricamento della pagina:

$.validator.unobtrusive.parse($("#validation")); 

vedere più al mio post sul blog: Using Unobtrusive jQuery Validation with Forms Loaded via AJAX

Problemi correlati