2009-07-28 45 views
23

Có phương pháp nào tôi có thể gọi để truy lục giá trị boolean có hay không một ValidationGroup cụ thể hợp lệ không? Tôi không muốn hiển thị thông báo xác thực hoặc tóm tắt - Tôi chỉ muốn biết liệu nó có hợp lệ hay không.Kiểm tra xem ValidationGroup có hợp lệ từ mã sau

Cái gì như:

Page.IsValid("MyValidationGroup") 

Trả lời

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 Bạn cũng có thể sử dụng 'Page.GetValidators (" ")' để đơn giản hóa mã một chút. – James

4

Hãy thử điều này:

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

Không chính xác những gì bạn muốn, nhưng hy vọng gần gũi.

+0

Vì vậy, Page.Validate làm cho ValidationSummary của tôi hiển thị? –

+0

Bạn cần phải tắt/ẩn tóm tắt xác thực theo chương trình nếu bạn muốn sử dụng giải pháp này theo cách đó. –

32

Bạn đã thử sử dụng phương pháp Page.Validate(string) chưa? Dựa trên tài liệu, có vẻ như đó có thể là những gì bạn muốn.

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

Lưu ý rằng trình xác thực trên điều khiển cũng gây ra đăng lại cũng sẽ kích hoạt. Snip từ bài viết MSDN ...

Phương thức xác thực xác thực nhóm xác thực được chỉ định. Sau gọi phương thức Validate vào một nhóm xác nhận , phương pháp IsValid sẽ trở thành sự thật chỉ khi cả định nhóm xác nhận và nhóm xác nhận của kiểm soát mà gây ra trang để được đăng lên máy chủ là hợp lệ.

+0

Điều đáng nói là điều này sẽ hiển thị thông báo xác nhận về xác thực không thành công. – modiX

3

Page.IsValid sẽ là sai lầm nếu có của các nhóm xác nhận xác nhận không hợp lệ. Nếu bạn muốn xác nhận một nhóm và xem tình trạng, hãy thử:

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

công trình câu trả lời Pavel nhưng không phải là đơn giản nhất. Đây là cách tôi đã giải quyết nó:

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; 
    } 
Các vấn đề liên quan