2009-11-10 13 views
2

2 개의 TextBox (textBoxA, textBoxB)가 있는데, 둘 다 자체 RequiredFieldValidator가 감시합니다. textBoxA에 값이 있거나 (또는 ​​특정 조건을 충족시키는 경우) textBoxB에 대해 RequiredFieldValidator를 '활성화'하고 싶습니다.조건부 유효성 검사 ASP.NET

사용 사례 :

사례 1 textBoxA = ""; -> 필수 입력란 확인 메시지 표시 textBoxB = ""; -> 확인 메시지를 표시하지 않음

사례 2 textBoxA = "값이 있음"; textBoxB = ""; -> 필수 필드 확인 메시지 표시

사례 3 textBoxA = "값이 있음"; textBoxB = "값도 있습니다";

도움 주셔서 감사합니다.

답변

4

이 경우 필자는 필요한 필드 유효성 검사기 대신 textBoxB에 CustomValidator를 사용합니다. 서버 측 유효성 검사 방법에서는 이와 같은 방법으로 유효성 검사의 정확한 특성을 제어 할 수 있습니다.

if (textBoxA.Text != string.Empty) 
{ 
    args.IsValid = textBoxB.Text != string.Empty; 
} 
+0

응답 해 주셔서 감사합니다. 서버 측 유효성 검사에서 작동하지만 동일한 페이지에서 일부 종속 유효성 검사가 수행되며 많은 포스트 백이 필요하지 않습니다. – tivo

0

나는 그것을 수행 할 선언적 방법이 있다고 생각하지 않습니다. 필자는 항상 유효성 검사기를 활성화 또는 비활성화로 설정 한 다음 끝에 Page.Validate를 호출 한 다음 (Page.IsValid를 기반으로 진행하거나 렌더링하는) ValidatePage 메서드를 사용하여이 작업을 수행했습니다.

그래서 어느

validator2.IsEnabled = textBoxA.Text.Trim().Length > 0 

또는 같은

.

그건 의사 코드 btw입니다 ... 나는 지금 당장 ASP.NET을 완료하지 않았습니다.

6

이렇게하려면 CustomValidator을 사용하는 것이 좋습니다. 클라이언트 측 및 서버 측 유효성 검사를 구현해야합니다.

서버 측 (내 머리의 상단과 테스트되지 않은 오프) 같은 뭔가

protected void ServerValidation (object source, ServerValidateEventArgs args) 
{  
    if (!string.IsNullOrEmpty(textBoxA)) 
     args.IsValid = !string.IsNullOrEmpty(textBoxB); 

} 

클라이언트 측

function clientValidation(sender, args) { 
    if (args.value !== "") { 
     var textBoxB= document.getElementById('textBoxB'); 
     args.IsValid = (textBoxB.value !== ""); 
    } 
    return; 
} 
0

내가 무엇을하기 위해, 필요 조건에 따라 유효성 검사 그룹을 변경하는 것입니다 예를 들어, 유효성 검사 그룹을 textBoxB에 다른 값 또는 동일한 textBoxA.ValidationGroup & 제출 제어에 할당 할 수 있습니다.이 작업은 textBoxB의 Onchange에서 수행 할 수 있습니다.

평가되는 유효성 검사기는 모두 제출 제어의 동일한 유효성 검사 그룹에 해당합니다.