ASP.NET의 사용자 입력 유효성 검사
웹사이트를 만들다보면 입력박스에서 데이터의 유효성 검사를 필히 하게된다.
특히 회원가입을 할 경우 필수적이라고 할수 있다.
ASP.NET에는 이런 유효성 검사를 할수 있는 유효성 검사 컨트롤을 지원하고 있다.
1. ASP.NET에서 지원하는 유효성 검사 컨트롤
2. 필수입력 유효성 검사 구현
- 유효성 검사 서버 컨트롤을 사용하여 모든 필드에 값을 채워놓도록 강제하는 것을 구현하여 보자.
3. 정규식 사용하기
- 사용자 아이디나 비밀번호 필드에 들어갈 수 있는 문자에 대한 강제하는 작업이 필요로 하다. 우리는 이 작업을 위해 "RegularExpressionValidator" 컨트롤을 사용할 것이다. 정규식은 우편번호, 전화번호, 전자우편 주소처럼 간결한 표현을 확인하고자 하는 경우 매우 유용하게 사용할 수 있다.
4. 컨트롤 입력 값 비교
- 비밀번호와 비밀번호 확인 필드가 일치하는지 확인해야 한다. 이것을 구현하기 위해 두 개의 입력 컨트롤을 동시에 비교할 수 있는 CompareValidator 컨트롤을 사용할 것이다.
5. 사용자 정의형
- 우리는 우리들의 가상의 사이트에 아이디가 이미 존재하는지 확인하는 과정이 필요하다. 이것을 위해서는 서버상에 몇 가지 데이터를 찾아보는 작업이 필요하다. 실제는 데이터베이스를 사용하여 구현하는 것이 원칙이나 가상으로 이 상황을 구현하기 위해 아이디가 "aaa"가 아니면 중복이 아니라고 판별하는 가상의 함수를 작성해 보자.
* 서버 이벤트 스트립트를 이용하여 작성
* 자바 스트립트를 이용하여 작성
작성자 : 상현넘™ [http://www.shblitz.net]
특히 회원가입을 할 경우 필수적이라고 할수 있다.
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자리의 공백 없는 문자로 이루어져야 합니다."
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: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>
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>
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]