2010-09-08 8 views
0

Pour valider champ login (au formulaire d'inscription) J'utilise CustomValidatorvalidation personnalisée par Web méthode

 <asp:CustomValidator id="uniqueLoginValidator" class="validator" runat="server" ControlToValidate="tbUserName" ErrorMessage="Login duplicate" ClientValidationFunction="LoginValidate"/> 

Pour connexion validate je dois consommer WCF, donc décider utilisation web méthodes

<script type="text/javascript"> 
    function LoginValidate(oSrc, args) { 
     var login = $(".loginField").val(); 
     PageMethods.ValidateLogin(login,OnRequestComplete, OnRequestError); 
     return; 
    } 
    function OnRequestComplete(result, userContext, methodName) { 
     return; 
    } 

    function OnRequestError(error, userContext, methodName) { 
     if (error != null) { 
      alert(error.get_message()); 
     } 
    </script> 

Mon méthode Web comme:

[WebMethod] 
    public static bool ValidateLogin(string login) 
    { 
     //wcf consuming 
     return res; 
    } 

Pour une validation réussie, je devrais configurer args à ClientValidationFunction, mais je reçois validation de résultat uniquement à callBack. Alors, comment puis-je configurer args pour le travail de validation.

Répondre

1

Le problème est que la ligne

PageMethods.ValidateLogin(login,OnRequestComplete, OnRequestError); 

lance un appel asynchrone par rapport à la méthode de la page et revenir immédiatement: il ne bloque pas jusqu'à ce que l'appel soit terminée.

Voir http://www.codeproject.com/KB/validation/Async_CustomValidator.aspx pour une discussion et une solution (un nouveau contrôle de validateur).

+0

Merci. La solution a été trouvée à http://www.codeproject.com/KB/ajax/SyncPMValidation.aspx par votre réponse !!! –

Questions connexes