2011-10-07 4 views
2

J'ai un formulaire qui est affiché dans un modal en utilisant Ajax sur mon application et ce formulaire a une validation à l'aide de la validation intégrée dans MVC 3 (Microsoft utilise jquery.validate). Cependant, il semble que, parce que le formulaire a été appelé avec ajax, la logique de validation ne se parle plus (comme si vous n'aviez pas utilisé .live() pour quelque chose qui a été ajouté à la page après le document load.)Validation ASP.NET MVC 3 et AJAX

Comment contourner ce problème?

EDIT

J'ai essayé d'obtenir ce travail en utilisant: http://xhalent.wordpress.com/2011/01/24/applying-unobtrusive-validation-to-dynamic-content/ tel que fourni par 3nigma ci-dessous, mais il ne semble pas avoir d'effet:/

$.ajax({ 
       url: $(this).attr('href'), 
       success: function (responseHtml) { 
        $('.uiModalContent').html($(responseHtml)); 
        $('.uiModalContent').removeClass('loading'); 
        // Apply validation to form that is inside the modal 
        $('.AjaxForm').removeData('validator'); 
        $.validator.unobtrusive.parseDynamicContent('.AjaxForm input'); 
       }, 

J'ai ajouté la code à mon succès appel à mon ajax pour montrer le modal car je ne peux pas mettre le javascript directement dans la vue appelée comme jquery ajax bins hors tags de script. Cependant, il ne semble pas appliquer la validation aux champs ajoutés dynamiquement ...

Toute aide serait grandement appréciée. Merci

Répondre

2

Je l'ai fait une chose semblable dans mon projet et il « fonctionne pour moi » :)

peut-être que vous pouvez essayer quelques petites choses:

  • Dans $('.uiModalContent').html($(responseHtml)); Je ne pense pas que vous devez envelopper responseHtml en tant qu'objet jquery; en fait, il est probablement préférable de simplement utiliser responseHtml comme il est: $('.uiModalContent').html(responseHtml);

  • Essayez de changer l'appel de validation: $.validator.unobtrusive.parse($('.uiModalContent'));

Je ne sais pas si cela va résoudre votre problème, mais il vaut la peine d'essayer.

+0

Leur est pas nécessaire de changer le premier point comme AJAX fonctionne très bien! C'est la validation sur le contenu ajouté dynamiquement qui ne fonctionne pas. – Cameron

0
$.validator.unobtrusive.parseDynamicContent('.uiModalContent'); 

résout le problème :)