ASP.net 유효성 검사 CompareValidator / CauseValidation
웹 프로그램을 하다보면, 유효성 검사가 필요합니다.
ASP.net의 경유 "유효성 검사" 도구들을 이용해서,
조금더 쉽게 유효성 검사 프로그램을 만들 수 있습니다.
유효성 검사란?
사용자가 입력하는 값에서 사용자의 실수를 막고,
잘못된 입력된 값을 차단함으로써,
사용자의 실수와 프로그램의 오류를 사전에 방지할 수 있는 역할을 할 수 있습니다.
유효성 검사 - CompareValidator
"기본이 되는 값"과 "대상이 되는 값"을 비교해서 일치하지 않으면 실패 처리
- 비교 대상이 없으면, 검사 성공으로 처리됨
- 기본적으로 RequiredFieldValidator를 제외한 모든 Validator은 null을 허용
- 비교: 같다, 같지 않다, 크다, 작다, 크거나 같다, 작거나같다, 자료형이 같다.
속성명 |
해당 설명 |
ControlToValidate |
기본 대상 |
ContorlToCompare |
비교 대상 |
ValueToCompare |
비교값(수치) |
Operator |
어떤 비교? |
Type |
비교되는 값의 자료형 |
<%@ Page Language="C#" AutoEventWireup="true"
CodeBehind="WebForm1.aspx.cs" Inherits="testWeb.WebForm1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
Password:
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
Password comfirm:
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:CompareValidator ID="CompareValidator1" runat="server"
ControlToCompare="TextBox1" ControlToValidate="TextBox2"
ErrorMessage="Passwords do not match."></asp:CompareValidator>
<br />
<asp:Button ID="Button1" runat="server" Text="Submit" />
</div>
</form>
</body>
</html>
참고:
[ASP.NET] 유효성검사 - CompareValidator
32.C# ASP.NET - CompareValidator [ 유효성검사컨트롤 ]
Control.CausesValidation 속성
컨트롤이 포커스를 받을 때, 유효성 검사가 필요한 모든 컨트롤에 대해 유효성 검사가 수행되도록 하는지를 나타내는 값을 가져오거나 설정합니다.
만약, 위 소소에서 Submit버튼의 속성값을 CausesValidation를 false로 하면,
버튼을 클릭해도, 해당 CompareValidator는 실행 되지 않습니다.
참고로 CausesValidation의 Default Value는 True입니다.
(버튼의 경우 모든 버튼을 클릭하는 경우, 유효성 검사를 진행합니다.)
[ 오류로 잘못 인식될수 있는 예제 ]
Choose Coke Button을 클릭하면, 해당 버튼의 Click이벤트가 바로 작동하지 않습니다.
Button의 CausesValidation 기본값인 True로 되어 있어서,
버튼(Choose Coke Button)을 클릭하면, 유효성 검사먼저 진행 됩니다.
모든 Validation이 끝나기 전까지는 클릭 이벤트는 작동하지 않습니다.
Choose Coke Button의 클릭이벤트와 유효성 검사와 관련성이 없다면,
CausesValidation속성을 False로 꼭 변경해야 합니다.
해당 부분은 ASP.net 웹폼을 처음 사용하시는 분들이 종종 격는 실수이죠.
버튼에 포커스가 가고, 클릭을 했게