상세 컨텐츠

본문 제목

ASP.NET 유효성 검사 컨트롤

Web Development

by thankee 2008. 1. 9. 03:42

본문

 입력체크나 옳바른값인지 검사하는 일등의 유효성 검사는 클라이언트 자체에서 충분히 가능합니다. 보통 이런 클라이언트 측에서 유효성 검사는 자바스크립트가 담당하였는데, 유효성 검사에 필요한 컨트롤의 종류가 많으면 많을수록 자바스크립트 코드도 엄청나게 늘어나버립니다. 또한 스크립트이기에 어쩔수 없이 디버그나 유지보수가 쉽지 않았기 때문에 많은 개발자나 학생들에게 부담이 되었던 것이 사실입니다.
 이러한 지루하고 또는 반복적인 노동이 될 수 밖에 없는 유효성 검사부분에 대해 ASP.NET에서는 유효성 검사 컨트롤을 제공하고 있습니다.

ASP.NET에서 제공하는 유효성 검사 컨트롤의 종류는 다음과 같습니다.
- RequiredFieldValidator : 값 입력여부를 검사합니다.
- RangeValidator : 값이 특정범위에 있는지 검사합니다.
- RegularExpressionValidator : 지정한 표현식과 패턴이 일치하는지 검사합니다.
- CompareValidator : 값을 지정한 다른 값과 비교합니다.
- CustomValidator : 사용자 지정 유효성 검사로직을 이용하여 검사합니다.
- ValidationSummary : 여러 유효성 검사 컨트롤들의 검사 결과를 모아서 출력할 수 있도록 지원합니다.

1. RequiredFieldValidator : 지정한 컨트롤의 값 입력 여부를 체크합니다.
  • ControlToValidate : 검사 대상 컨트롤을 지정합니다.
  • EnableClientScript : 클라이언트 측 스크립트(JavaScript나 VbScript를 칭합니다.)를 사용할지 여부를 지정합니다. False로 지정할 경우, 서버로 해당 페이지 전송을 통해 유효성 검사를 하게 됩니다.
  • ErrorMessage : ValidationSummary를 사용할 경우, 이 ValidationSummary에 출력될 에러 메세지를 지정하는 속성입니다. Text 속성 값을 지정하지 않을 경우, 이 값이 Text값을 대신하게 됩니다.
  • Text : 출력될 에러 메세지를 지정하는 속성입니다.
  • InitialValue : 여기서 지정한 값과 같을 경우, 에러메세지를 나타내게 됩니다. 기본값은 공란입니다.
  • Display : 에러 메세지를 출력하는 방법에 대한 설정입니다.(Default값은 Dynamic입니다.)
    * None : 에러 메세지를 출력하지 않습니다.
    * Static : 에러 메세지가 출력되어야 할 때 공간을 차지하게 됩니다.
    * Dynamic : 에러메시지가 출력되든 되지 않든 공간을 차지하고 있게 됩니다.
  • SetFocusOnError : 에러가 발생한 경우, 해당 컨트롤에 포커스를 둘지 여부입니다.
  • ValidationGroup : PostBack를 발생시키는 컨트롤이 PostBack를 시도하려고 할 때, ValidationGroup이 같은 유효성 검사 컨트롤이 작동하게 됩니다. PostBack를 발생시키는 컨트롤은 대표적으로 Button계열 컨트롤이나, AutoPostBack 속성이 있는 컨트롤을 말합니다. 버튼에 ValidationGroup를 지정하고, 각 유효성 검사 컨트롤에 같은 ValidationGroup를 지정하면, 버튼이 클릭되어 PostBack이 발생하기 전에 같은 그룹의 유효성 검사 컨트롤을 동작시킵니다.

2. CompareValidator : 지정한 컨트롤 또는 값과 비교하여 유효성 검사를 합니다.
  • ControlToCompare : 비교대상 컨트롤을 지정합니다.
  • CultureInvariantValues : 유효성 검사를 시작하기 전에 Culture중립 코드로 변환할 지 여부를 결정합니다. Culture란 지역화된 언어나 표현정보들을 말하는 것으로서, CultureInfo.CurrentCulture로서(using System.Globalization;선언 필요) 현재 Culture를 확인할 수 있습니다. Culture는 '언어코드-지역 또는 국가코드'로 구성됩니다. 한국의 경우 ko-KR로서 한국어-한국지역을 나타냅니다. Culture중립코드란 ko에 해당하는 부분으로서 지역 또는 국가코드를 제외한 Culture코드를 말합니다.
  • Operator : 비교 식을 지정합니다. Equal, NotEqual, GreaterThan, LessThan, DataTypeCheck... 등등이 있습니다. 여기서 지정한 식이 거짓이되면 에러 메세지를 나타내게 됩니다. 여기서 DataTypeCheck는 데이터 타입이 같은지 여부를 판단하는 것입니다.
  • Type : 비교할 값의 데이터 형식입니다.
  • ValueToCompare : 비교할 값을 지정하는 속성입니다. ControlToCompare 속성과 중복 지정 가능합니다.

3. RangeValidator : 특정 범위 내의 값인지 검사를 합니다.
  • MaximumValue : 최대값을 지정합니다.
  • MinimumValue : 최소값을 지정합니다.
  • Type : Type는 검사할 데이터 자료형을 결정하는 것입니다. 기본값은 String로서 이 속성을 그대로 두고 1~100까지 숫자를 체크하게 되면, 옳바른 결과를 얻을 수 없습니다.(문자열 비교를 하게 되므로) 따라서 사용하고자하는 데이터 타입을 반드시 지정해 주시기 바랍니다.

4. ValidationSummary : 해당 페이지의 모든 유효성 검사 컨트롤의 유효성 검사 결과 메시지를 모아서 출력해주는 기능을 합니다. 한 곳에 모든 에러메세지를 표현할 경우 유용합니다.
  • HeaderText : ValidationSummary의 제목을 표시합니다.
  • ShowMessageBox : 메세지박스를 이용하여 에러메세지를 출력할지 여부를 지정합니다.
  • DisplayMode : 해당 페이지의 에러 메세지들을 출력할 방법을 결정합니다. BulletList, List, SingleParagraph 등이 있습니다.
  • ShowSummary : 해당 페이지의 에러 메세지를 페이지에 텍스트로서 출력할 지 여부를 지정합니다.
  • ValidationGroup : 그룹을 지정하면, 같은 그룹내의 오류 정보만을 출력합니다.

5. RegularExpressionValidator : 사용자가 지정한 표현식과 패턴이 일치하는지 여부를 검사합니다.
  • ValidationExpression : 검사할 표현식을 지정합니다. 정규식 편집기를 제공함으로서 간편하게 원하는 표현식을 정할 수 있습니다. 실제 정규식 작성법은 웹사이트나 msdn을 참고하도록합니다.
    (한글 정규식 설명 msdn사이트 : http://www.microsoft.com/korea/msdn/library/ko-kr/dev/aspdotnet/regexnet.aspx)
    - 주민등록번호의 경우 간단하게 작성되어 있는데, 다음과 같이 개선될 수 있다.
      \d{2}[0-1]\d{1}[0-3]\d{1}-[1-4]\{6}

6. CustomValidator : 사용자가 작성한 유효성 검사 구문을 사용하는 컨트롤입니다. 함수를 작성해서 그 함수를 컨트롤에 할당해 주는 방식을 취하는데, 특별히 신경써야할 부분은 함수를 작성할 때 예외처리를 확실하게 해주는 것입니다.(예로 숫자를 입력해야하는데 문자열을 입력한 경우)
  • ClientValidationFunction : 자바스크립트로 작성된 유효성 검사 함수 이름을 지정하는 속성입니다. 자바스크립트 함수 작성 규칙은 다음과 같습니다.
    1. 두개의 매개변수를 받도록 합니다.(첫번째는 유효성 검사 컨트롤, 두번째는 유효성을 검사할 값과 그 결과를 저장할 변수가 포함되어 있습니다.)
    2. '두번째매개변수.Value'에 포함된 값을 체크함으로서 유효성 검사를 합니다.
    3. 유효성 검사 결과를 '두번째매개변수.IsValid'에 저장합니다.
    <script language="javascript">
    <!--
     function check(source, args)
     {
        if((args.Value % 2) == 1)
            a.IsValid = true;
        else
            a.IsValid = false;
      }
    -->
    </script>


  • ValidateEmptyText : 검사할 컨트롤의 값이 비엇을 때 유효성 검사를 할지 여부를 지정합니다.
  • OnServerValidate : aspx파일의 소스 페이지에서 추가할 수 있는 이벤트로서, 서버에서 유효성 검사가 요청될 경우(예 : 수동으로 Page.Validate(); 메서드를 호출할 경우)발생하는 이벤트입니다. 이 이벤트에 메서드를 지정하고, 다음과 같은 메서드를 작성하시면 됩니다. 서버 측에서 모든 유효성 검사가 끝난 후 결과 값은 Page.IsValid;에 저장되어 있습니다.
    public void 메서드명(object source, ServerValidateEventArgs args)
    {
         //첫번째 매개변수는 검사 대상 객체를 전달 받습니다.
         //두번째 매개변수는 유효성을 검사할 값과, 유효성검사결과를 받는 변수가 포함되어있습니다.
         //따라서 유효성 검사 코드는 다음과 같이 될 수 있습니다.
         if(int.Parse(args.Value) % 2 == 0)
             args.IsValid = true;
             //IsValid에 true 또는 flase를 할당함으로서 검사 통과여부를 알릴수 있습니다.
          else
             args.IsValid = false;
    }

by thankee from tistory.com

관련글 더보기