2010-06-17 4 views

Répondre

0

Je ne pense pas que ce soit possible. Il est toutefois possible d'intercepter la validation en définissant OnClientClick sur les contrôles qui effectuent des publications. Ensuite, vous pouvez vérifier la variable JavaScript globale Page_IsValid pour le résultat de la validation. Une chose à garder à l'esprit est que, lorsqu'il n'y a pas de validateur sur une page, Page_IsValid sera indéfini.

4

Vous devez appeler la fonction javascript Page_ClientValidate() pour lancer la validation ASP.NET connectée à vos contrôles de page. Une fois que cela est appelé, la valeur booléenne Page_IsValid sera correctement définie.

Voici un exemple de la façon dont je l'utilise. Si la validation ASP.NET est réussie, je désactive le bouton, sinon le bouton reste activé et le résumé de validation est affiché à l'utilisateur. Le OnClientClick provient d'un contrôle ASP: Button.

OnClientClick="javascript:Page_ClientValidate(); if (Page_IsValid==true) { this.disabled=true; }" 
+1

Cela semble fonctionner, mais en fait il imprime deux fois le ShowMessageBox de ValidationSummary :( – markzzz

0

j'ai commencé à mettre en œuvre la solution par @EverettEvola mais aussi où la logique de validation a été appelé plusieurs fois et d'afficher plusieurs popups ValidationSummary. Ma solution est la suivante:

Sur le bouton (dans mon cas, le bouton est un bouton d'envoi)

OnClientClick="return CustomValidationOnClick()" 

Et le CustomValidationOnClick()

function CustomValidationOnClick(source, args) { 

    //Manually kickoff page validation 
    //This call will display the Validation summary popup if page is invalid 
    Page_ClientValidate(); 

    //Page_IsValid set by the result of the Page_ClientValidate() call 
    if (Page_IsValid == true) { 
     this.disabled=true; 
     return true; //if Submit button return true to continue form submit 
    } 
    else { 
     //do whatever here 
     return false; //if Submit button return false to cancel form submit 
    } 
} 
Questions connexes