2010-09-08 4 views
0

Для проверки поля входа (в виде регистра) Я использую CustomValidatorПользовательские проверки через веб-метод

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

Для валидации входа мне нужно потреблять ФОС, поэтому решили использовать веб-методы-

<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> 

Мои web-метод вроде:

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

Для успешной проверки я должен настроить args на ClientValidationFunction, но я получаю проверка результатов только при вызове. Итак, как я могу настроить args для работы валидации.

ответ

1

Проблема заключается в том, что линия

PageMethods.ValidateLogin(login,OnRequestComplete, OnRequestError); 

инициирует асинхронный вызов метода страницы и немедленно вернуться: он не блокирует, пока этот вызов не завершен.

См. http://www.codeproject.com/KB/validation/Async_CustomValidator.aspx для обсуждения и решения (новый контроль валидатора).

+0

Спасибо. Решение было найдено по адресу http://www.codeproject.com/KB/ajax/SyncPMValidation.aspx по вашему ответу !!! –

Смежные вопросы