2010-04-20 3 views
0

시나리오는 다음과 같습니다.C# 유효성 검사 접근 방식

컨트롤 4 개, 드롭 다운 2 개, 날짜 선택 도구 2 개 및 유효성 검사 규칙이 있습니다. 하나는 마스터 드롭 다운
마스터 드롭 다운의 값에 따라 두 가지 날짜 선택 도구와 다른 드롭 다운 컨트롤에 일부 유효성 검사 규칙이 적용됩니다.
사용자가 네 가지 컨트롤 중 하나에서 값을 변경하면이 유효성 검사 규칙이 트리거됩니다.

마지막으로 편집 된 컨트롤에 오류 공급자를 설정해야합니다.

모든 유효성 검사 규칙에 대해 하나의 메서드를 만드는 것이 좋습니다. 구문 마스터 방법 :이 같은

Private void ValidateData(Control ctrl) 
    { 
     ClearAllErrors(); 
     switch(value value in master dropdown) 
     case 'Value 1' : Rule1(ctrl) 
     case 'Value 2' : Rule2(ctrl) 
     .... 
    } 

그리고 규칙 방법 : 네 개의 컨트롤 중 하나의 검증 이벤트에 지금

Private void Rule1(Control ctrl) 
{ 
    //Rule Logic 
    //Eg. Date in dropdown should between 5 days after the date in dropdown1 
    //and 3 days before the date in dropdown2. 
    //Set error provider on the control if rule breaks. 
} 

는 그 제어를 전달하고 validateData() Methods를 호출합니다.

아이디어는 코드를 유지 관리하는 것입니다. 이 접근법을 어떤 방식 으로든 최적화 할 수 있습니까? 아니면 이러한 종류의 검증을 처리하는 더 좋은 방법이 있습니다.

답변

1

접근 방법에 아무런 문제가 없습니다.

1

유효성 검사기 factory을 사용하십시오.

+0

유효성 검사를 위해 팩토리 패턴을 구현하는 방법에 대해 조금 더 자세히 설명해 주시겠습니까? 어쩌면 어떤 의사 코드일까요? –

+0

내가 제공 한 링크에서 C# 예제를 참조하십시오. 구성이 유효하거나 부적합하다는 의미의 부울을 반환하거나 예외 기반 방식을 사용할 수 있습니다. – thelost

+0

괜찮은 대안 : 그러나 우리는 ValidationBase라는 기본 클래스를 구현할 각 규칙에 대해 새 클래스를 만들어야합니다. 시간이 지남에 따라 늘어나는 규칙 수가 늘어나면서 요구되는 수업 수가 늘어날 것 같습니다. –

관련 문제