ASP.NET의 사용자 입력 유효성 검사

2006. 11. 18. 20:21 IT 및 개발/ASP.NET & AJAX
웹사이트를 만들다보면 입력박스에서 데이터의 유효성 검사를 필히 하게된다.
특히 회원가입을 할 경우 필수적이라고 할수 있다.
ASP.NET에는 이런 유효성 검사를 할수 있는 유효성 검사 컨트롤을 지원하고 있다.



1. ASP.NET에서 지원하는 유효성 검사 컨트롤
RequiredFieldValidator 사용자가 데이터를 입력 하였는지 또는 어떤 선택을 하였는지 확인한다. 만일 아무런 입력이 되지 않았으면 에러를 발생한다.
RegularExpressionValidator 사용자 입력에 대한 정규식을 확인한다. 정규식을 활용하면 우편번호나 전화번호 또는 자기가 직접 만든 정규 데이터 형식의 다양한 입력 값의 유효성을 확인을 할 수 있다.
CompareValidator 고정된 값과 입력 컨트롤 또는 다른 입력 컨트롤과의 값을 비교한다. 예를 들어 비밀번호의 경우 비밀번호 확인 텍스트 박스에 사용할 수 있다. 또한 형식화된 데이터나 숫자의 비교에 사용할 수 있다.
RangeValidator CompareValidator와 비슷하지만 입력한 값을 고정된 두 값을 비교할 수 있다.
CustomValidator 개발자가 직접 유효성 검사 프레임워크의 특정 코드를 입력하도록 허용하는 컨트롤이다.


2. 필수입력 유효성 검사 구현
 - 유효성 검사 서버 컨트롤을 사용하여 모든 필드에 값을 채워놓도록 강제하는 것을 구현하여 보자.
<asp:TextBox ID="txtUserID" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtUserID" ErrorMessage="아이디는 필수입력 입니다." Display="Dynamic"></asp:RequiredFieldValidator>


3. 정규식 사용하기
 - 사용자 아이디나 비밀번호 필드에 들어갈 수 있는 문자에 대한 강제하는 작업이 필요로 하다. 우리는 이 작업을 위해 "RegularExpressionValidator" 컨트롤을 사용할 것이다. 정규식은 우편번호, 전화번호, 전자우편 주소처럼 간결한 표현을 확인하고자 하는 경우 매우 유용하게 사용할 수 있다.
<asp:TextBox ID="txtUserID" runat="server"></asp:TextBox>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="txtUserID" ValidationExpression="[a-zA-Z]{6,10}" ErrorMessage="아이디는 반드시 6~10자리의 문자로 이루어져야 합니다." Display="Dynamic"></asp:RegularExpressionValidator>
정규식 예제)
ValidationExpression=".*[@#$%^&*/].*" ErrorMessage="반드시 @#$%^&*/. 문자 중 하나를 포함해야 합니다."
ValidationExpression="[^\s]{4,12}" ErrorMessage="비밀번호는 반드시 4~12자리의 공백 없는 문자로 이루어져야 합니다."


4. 컨트롤 입력 값 비교
 - 비밀번호와 비밀번호 확인 필드가 일치하는지 확인해야 한다. 이것을 구현하기 위해 두 개의 입력 컨트롤을 동시에 비교할 수 있는 CompareValidator 컨트롤을 사용할 것이다.
<asp:TextBox ID="txtPassword" runat="server" TextMode="Password"></asp:TextBox>
<asp:TextBox ID="txtPassword2" runat="server" TextMode="Password"></asp:TextBox>
<asp:CompareValidator ID="CompareValidator1" runat="server" ControlToValidate="txtPassword2" ControlToCompare="txtPassword" ErrorMessage="비밀번호가 일치하지 않습니다." Display="Dynamic"></asp:CompareValidator>


5. 사용자 정의형
 - 우리는 우리들의 가상의 사이트에 아이디가 이미 존재하는지 확인하는 과정이 필요하다. 이것을 위해서는 서버상에 몇 가지 데이터를 찾아보는 작업이 필요하다. 실제는 데이터베이스를 사용하여 구현하는 것이 원칙이나 가상으로 이 상황을 구현하기 위해 아이디가 "aaa"가 아니면 중복이 아니라고 판별하는 가상의 함수를 작성해 보자.

 * 서버 이벤트 스트립트를 이용하여 작성
<script runat="server">
 protected void CheckID(object source, ServerValidateEventArgs args)
 {
  args.IsValid = !args.Value.Equals("aaa");
 }
</script>


<asp:TextBox ID="txtUserID" runat="server"></asp:TextBox>
<asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="txtUserID" OnServerValidate="CheckID" ErrorMessage="이미 존재하는 아이디입니다." Display="Dynamic"></asp:CustomValidator>

 * 자바 스트립트를 이용하여 작성
<script language="javascript" type="text/jscript">
 function CheckID(oSrc, args)
 {
  args.IsValid = (args.Value != "aaa");
 }
</script>


<asp:TextBox ID="txtUserID" runat="server"></asp:TextBox>
<asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="txtUserID" ClientValidationFunction="CheckID" ErrorMessage="이미 존재하는 아이디입니다." Display="Dynamic"></asp:CustomValidator>

작성자 : 상현넘™ [http://www.shblitz.net]