2012-11-14 3 views
8

У меня есть страница, где я хочу регистрировать каждое сообщение проверки, которое пользователь не выполнил требований к соответствующему полю.Найти неудачные валидаторы asp.net

Проблема заключается в том, что моя обратная связь/нажатие кнопки никогда не происходит (возможно, из-за проверки клиентов), и поэтому ведение журнала никогда не происходит до того, как пользователь действительно получит каждое поле справа (без ошибок проверки).

Кнопка метод события нажатия:

protected void btnNext_Click(object sender, EventArgs e) 
{ 
    Page.Validate(); 
    if(Page.IsValid) 
    { 
     //code 
    } 
    else 
    { 
     foreach (IValidator validator in Validators) 
     { 
      if (!validator.IsValid) 
      { 
       PageValidatorErrors error = new PageValidatorErrors 
           { 
            WebsiteID = AppState.WebsiteID, 
            Page = Request.Url.AbsolutePath, 
            URL = Request.Url.ToString(), 
            UserIP = Tools.GetIP(), 
            ErrorMessage = validator.ErrorMessage, 
            CreatedDate = DateTime.Now 
           }; 
       pageValidatorErrorsRep.insert(error); 
      } 
     } 
    } 
} 

Любые идеи, как я мог войти theese сообщения?

Edit:

<script type="text/javascript"> 
    function validatePage() 
    { 
     if (window.Page_IsValid != true) 
     { 
      //Page_Validators is an array of validation controls in the page. 
      if (window.Page_Validators != undefined && window.Page_Validators != null) 
      { 
       //Looping through the whole validation collection. 
       for (var i = 0; i < window.Page_Validators.length; i++) 
       { 
        window.ValidatorEnable(window.Page_Validators[i]); 

        //if condition to check whether the validation was successfull or not. 
        if (!window.Page_Validators[i].isvalid) 
        { 
         var errMsg = window.Page_Validators[i].getAttribute('ErrorMessage'); 
         alert(errMsg); 
        } 
       } 
      } 
     } 
    } 
</script> 
+0

О, я вижу, вы спрашиваете, как подключить к клиенту стороне JavaScript, которые испускают валидаторы asp.net. – MatthewMartin

+0

спасибо за образец цикла проверки валидатора, я как раз собирался написать его самостоятельно :) – rdmptn

ответ

3

Вот часть решения, вы можете получить Подтверждает/правда ложные, вызывая его на стороне клиента:

http://razeeb.wordpress.com/2009/01/11/calling-aspnet-validators-from-javascript/

function performCheck() 
{ 

if(Page_ClientValidate()) 
{ 

//Do something to log true/ false 
} 

} 
+0

Возможно, это трюк, знаете ли вы, как я получаю «неудачные» валидаторы или могу ли я каким-то образом вызвать метод C#? – KLIM8D

+0

Вот ссылка на документ MSDN для библиотеки JS, с которой работают валидаторы. Из моего краткого чтения вам не так много работать: http://msdn.microsoft.com/en-us/library/ aa338815 (v = vs.71) .aspx – MatthewMartin

+0

Спасибо, теперь я могу пройти через валидаторы и предупредить, если он недействителен. Просто нужно извлечь сообщение об ошибке сейчас, по какой-то причине оно равно null для каждого валидатора. Я добавил javascript к теме. – KLIM8D

2

Попытка изменить EnableClientScript свойство всех валидаторов в ложь. Все ваши проверки будут происходить только на стороне сервера.

+0

Да, это сделало работу с обратной записью, как бы то ни было, функция проверки правильности полей при вводе или нажатии следующего поля не из c. Я хотел бы сохранить это, если это возможно. – KLIM8D

+0

Я думаю, что это может быть лучшим выбором. Избавьтесь от валидаторов страниц и сделайте все это на стороне сервера. Таким образом, у вас есть намного больше контроля над тем, что нужно регистрировать. – NotMe

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