C#/ASP.net

ASP.net 유효성 검사 CompareValidator / CauseValidation

saltdoll 2021. 1. 28. 03:54
반응형

웹 프로그램을 하다보면, 유효성 검사가 필요합니다.

ASP.net의 경유 "유효성 검사" 도구들을 이용해서,

조금더 쉽게 유효성 검사 프로그램을 만들 수 있습니다.

 

유효성 검삭 객체들

 

유효성 검사란?

사용자가 입력하는 값에서 사용자의 실수를 막고,

잘못된 입력된 값을 차단함으로써, 

사용자의 실수와 프로그램의 오류를 사전에 방지할 수 있는 역할을 할 수 있습니다.

 

Compare Validator 사용

 

 

 

 

유효성 검사 - CompareValidator

"기본이 되는 값"과 "대상이 되는 값"을 비교해서 일치하지 않으면 실패 처리

- 비교 대상이 없으면, 검사 성공으로 처리됨

두 항목의 값을 입력하지 않고 Submit해도 성공처리됨

- 기본적으로 RequiredFieldValidator를 제외한 모든 Validator은 null을 허용

- 비교: 같다, 같지 않다, 크다, 작다, 크거나 같다, 작거나같다, 자료형이 같다.

 

비교 대상의 객체의 ID를 선택해 줍니다.

속성명

해당 설명

 ControlToValidate 

 기본 대상 

 ContorlToCompare

 비교 대상 

 ValueToCompare

 비교값(수치) 

 Operator

 어떤 비교? 

 Type

 비교되는 값의 자료형 

 

유효성 검사 객체의 속성들

 

ErrorMessage는 조건이 틀릴 경우 메시지를 보여줍니다.

 

 

CompareValidator를 위한 예제 초기 화면

<%@ 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>

 

비교값이 다를때, ErrorMessage를 표시해 줍니다.

 

비교값이 같을 때는 메지시를 보여주지 않습니다.

 

참고:

 [ASP.NET] 유효성검사 - CompareValidator

 32.C# ASP.NET - CompareValidator [ 유효성검사컨트롤 ]

이미지로 설명한 포스트 - 유효성검사

 

 

 

 

 

Control.CausesValidation 속성

 

컨트롤이 포커스를 받을 때, 유효성 검사가 필요한 모든 컨트롤에 대해 유효성 검사가 수행되도록 하는지를 나타내는 값을 가져오거나 설정합니다.

 

만약, 위 소소에서 Submit버튼의 속성값을 CausesValidation를 false로 하면,  

버튼을 클릭해도, 해당 CompareValidator는 실행 되지 않습니다.

 

참고로 CausesValidation의 Default Value는 True입니다.

(버튼의 경우 모든 버튼을 클릭하는 경우, 유효성 검사를 진행합니다.) 

 

 

[ 오류로 잘못 인식될수 있는 예제 ]

Choose Coke Button을 클릭하면, 해당 버튼의 Click이벤트가 바로 작동하지 않습니다.

Choose Coke Button에서 CausesValidation를 True인 경우, 버튼을 클릭시 유효성검사먼저 하게된다.

 

Button의 CausesValidation 기본값인 True로 되어 있어서,

버튼(Choose Coke Button)을 클릭하면, 유효성 검사먼저 진행 됩니다.

 

모든 Validation이 끝나기 전까지는 클릭 이벤트는 작동하지 않습니다.

Choose Coke Button를 클릭하면, 관련성 없는 유효성 검사 메시지가 나옵니다.

 

CompareValidator에러가 발생시도 작동하지 않습니다.

 

 

모든 유효성 검사가 끝나야만, Click 이벤트를 수행하게 됩니다.

Choose Coke Button의 클릭이벤트와 유효성 검사와 관련성이 없다면, 

 

CausesValidation속성을 False로 꼭 변경해야 합니다.

유효성 검사와 무관하게 처리

해당 부분은 ASP.net 웹폼을 처음 사용하시는 분들이 종종 격는 실수이죠.

버튼에 포커스가 가고, 클릭을 했게

 

반응형