2009-07-28 8 views
23

Czy istnieje metoda, którą można wywołać, która pobiera wartość boolowską, niezależnie od tego, czy konkretna grupa ValidationGroup jest poprawna czy nie? Nie chcę wyświetlać komunikatu sprawdzania poprawności ani podsumowania - Chcę tylko sprawdzić, czy jest poprawny, czy nie.Sprawdzanie poprawności grupy ValidationGroup z poziomu kodu

Coś jak:

Page.IsValid("MyValidationGroup") 

Odpowiedz

14
protected bool IsGroupValid(string sValidationGroup) 
{ 
    foreach (BaseValidator validator in Page.Validators) 
    { 
     if (validator.ValidationGroup == sValidationGroup) 
     { 
     bool fValid = validator.IsValid; 
     if (fValid) 
     { 
      validator.Validate(); 
      fValid = validator.IsValid; 
      validator.IsValid = true; 
     } 
     if (!fValid) 
      return false; 
     } 

    } 
    return true; 
} 
+2

+1 Można również użyć 'Page.GetValidators (" ")', które uprościłoby trochę kod. – James

4

Spróbuj tego:

Page.Validate("MyValidationGroup"); 
if (Page.IsValid) 
{ 
    //Continue with your logic 
} 
else 
{ 
    //Display errors, hide controls, etc. 
} 

Nie dokładnie to, co chcesz, ale mam nadzieję, że blisko.

+0

Tak będzie również Page.Validate spowodować wyświetlenie mojego ValidationSummary? –

+0

Będziesz musiał programowo wyłączyć/ukryć podsumowanie sprawdzania poprawności, jeśli chcesz użyć tego rozwiązania w ten sposób. –

32

Czy próbowałeś już korzystać z metody Page.Validate(string)? Na podstawie dokumentacji wygląda na to, że może być to, czego chcesz.

Page.Validate("MyValidationGroup"); 
if (Page.IsValid) 
{ 
    // your code here. 
} 

Należy zwrócić uwagę, że sprawdzanie poprawności w sterowaniu, które spowodowało również odświeżenie, również zostanie uruchomione. Snip z artykułu MSDN ...

Metoda Waliduj sprawdza poprawność określonej grupy sprawdzania poprawności . Po wywołanie metody Weryfikuj na grupy oryginalności IsValid metoda zwróci true tylko wtedy, gdy zarówno określona grupa walidacji i grupa walidacja kontrolą że spowodowane stronę, aby być wysłane do serwera są ważne.

+0

Warto wspomnieć, że będzie wyświetlać komunikaty sprawdzania poprawności w przypadku nieudanych walidacji. – modiX

3

Page.IsValid będzie false, jeśli którykolwiek z uznanych grup walidacji był nieprawidłowy. Jeśli chcesz, aby potwierdzić grupę i zobaczyć stan, spróbuj:

protected bool IsGroupValid(string sValidationGroup) 
    { 
     Page.Validate(sValidationGroup); 
     foreach (BaseValidator validator in Page.GetValidators(sValidationGroup)) 
     { 
      if (!validator.IsValid) 
      { 
       return false; 
      } 
     } 
     return true; 
    } 
6
var isValidGroup = Page 
        .GetValidators(sValidationGroup) 
        .Cast<IValidator>() 
        .All(x => x.IsValid); 
1

prace odpowiedź Pavel, ale nie jest najprostsze. Oto, jak go rozwiązałem:

protected Boolean validateGroup(String validationGroupName) { 
     Boolean isGroupValid = true; 

     foreach (BaseValidator validatorControl in Page.GetValidators(validationGroupName)) { 
      validatorControl.Validate(); 

      if (!validatorControl.IsValid) 
       isGroupValid = false; 
     } 

     if (!isGroupValid) 
      return false; 
     else 
      return true; 
    }