ASP.NET 유효성 검사 컨트롤


확인

문서번호

2016-G-3

보존기간

2020.04.17

보고일자

2016.04.17

작성자

조범희

 

 

ASP.NET(유효성 검사 컨트롤)

 

 

<기술문서>

 

31기 조범희

 

 




 

목차

1.  유효성 검사란?

 

2.  유효성 검사 컨트롤(Validation Control)

2.1   유효성 검사 컨트롤 정의

2.2   유효성 검사 컨트롤 종류

2.3   유효성 검사 컨트롤 사용 예제


 





1.  유효성 검사란?

l  오류 검증이나 표준 적합 검증을 위해 수행하는 검사 (Ex : 회원가입 시에 주민번호 입력, 입력하지 않을 시 오류 메시지 띄워준다.) 

 

2.  유효성 검사 컨트롤

2.1 유효성 검사 컨트롤 정의

l  기존 웹 프로그래밍에 있어서 개발자에 부담이 되었던 작업 중 하나는 입력한 데이터가 유효한지를 검사하는 것이었습니다. 코드로서 페이지 내에 입력 받는 내용이 많으면 많을수록 코드 량은 기하급수적으로 늘어나는데 ASP.NET의 웹 폼에서는 유효성 검사 컨트롤을 추가함으로써 이러한 작업을 쉽고 간단하게 해결 할 수 있습니다.

 

2.2        유효성 검사 컨트롤 종류

RequireFieldValidator

-사용자가 데이터를 입력 하였는지 또는 어떤 선택을 하였는지 확인합니다. 만일 아무런 입력이 되지 않았으면 에러를 발생합니다.

 

Property

 

기능

ControlValidate

Validator가 영향을 미칠 컨트롤을 설정

 

 

Display

화면에 언제, 어떻게 보여줄지 나타내는 부분

(None : 유효성 검사를 해서 오류가 나더라도 메시지는 출력이 되지 않는다.

Static, Dinamic : 유효성 검사가 성공하면 오류 메시지는 나타나지 않고 실패하면 그때 메시지가 출력)

※현재 Asp.NET버전에서는 Static Dinamic에 차이가 없다.

ErrorMessage

Validation Summary컨트롤에 보여질 에러 메시지를 입력하는 부분

반드시 값을 입력해야 하는데 그렇지 못했을 경우 나타나는 오류 메시지

 

 

  

CompareValidator

-고정된 값과 입력 컨트롤 또는 다른 입력 컨트롤과의 값을 비교합니다. 예를 들어 비밀번호의 경우 비밀번호 확인 텍스트 박스에 사용할 수 있습니다. 또한 형식화된 데이터나 숫자의 비교에 사용할 수 있습니다. , 사용자가 입력한 값과 다른 컨트롤의 값을 비교.

 

Property

 

기능

ControlToCompare

비교를 해야 하는 대상을 지정

ControlToValidate

위의 대상과 비교해야 하는 또 다른 하나의 컨트롤 지정

 

ErrorMessage

 

Validation Summary컨트롤에 보여질 에러 메시지를 입력하는 부분

반드시 값을 입력해야 하는데 그렇지 못했을 경우 나타나는 오류 메시지

 

 

RegularExpressionValidator

-사용자 입력에 대한 정규식을 확인합니다. 정규식을 활용하면 우편번호나 전화번호 또는 자기가 직접 만든 정규 데이터 형식의 다양한 입력 값의 유효성을 확인을 할 수 있습니다. 즉 일정한 표현 식에 의해 정의된 패턴과 사용자가 입력한 값이 일치하는지 체크.(Ex : 메일주소, 전화번호, 우편번호)

 

Property

 

기능

ControlToValidate

Validator가 영향을 미칠 컨트롤을 설정

 

ValidationExpression

 

정해진 정규식을 표현

(정규식 편집기로 지정)

ErrorMessage

Validation Summary컨트롤에 보여질 에러 메시지를 입력하는 부분

반드시 값을 입력해야 하는데 그렇지 못했을 경우 나타나는 오류 메시지

 

 

 

RangeValidator

-CompareValidator와 비슷하지만 입력한 값을 고정된 두 값을 비교할 수 있습니다. , 사용자가 입력한 값이 특정 범위 내의 값인지 체크(, 문자열, 날짜의 범위를 체크하고 상수뿐만 아니라 다른 컨트롤에서 추출한 값도 가능)

Property

기능

ControlToValidate

Validator가 영향을 미칠 컨트롤을 설정

MaximumValue

입력 받을 값의 최대값 설정

MinimumValue

입력 받을 최소값 설정

 

Type

 

입력 받아야 할 값이 어떤 형인지 설정

(정수형, 문자형,. 날짜형, 통화량 등)

ErrorMessage

Validation Summary컨트롤에 보여질 에러 메시지를 입력하는 부분

반드시 값을 입력해야 하는데 그렇지 못했을 경우 나타나는 오류 메시지

 

 

CustomValidator

-개발자가 직접 유효성 검사 프레임워크의 특정 코드를 입력하도록 허용하는 컨트롤입니다.

Property

기능

ControlToValidate

Validator가 영향을 미칠 컨트롤을 설정

ClientValidationFunction

사용자가 직접 입력해야 할 사용자 정의 함수 명 설정

 

EnableClientScript

 

사용자가 입력하는 스크립트가 JavaScript VBScript와 같은

클라이언트 단의 스크립트를 묻는 속성

ErrorMessage

Validation Summary컨트롤에 보여질 에러 메시지를 입력하는 부분

반드시 값을 입력해야 하는데 그렇지 못했을 경우 나타나는 오류 메시지

 

  

Validation Summary

-유효성 검사 컨트롤에 의해서 체크한 결과를 모아서 출력하는 역할

Property

기능

Page.IsValid

현재 페이지에서 수행한 유효성 검사의 결과를 값으로 저장

 

DisplayMode

 

Validation Summary컨트롤의 메시지를 페이지에 표시할 열거방법 지정

(list/ BulletList/ SingleParagraph)

EnableClientScript

수집된 오류 정보를 메시지 박스를 통해 보여줌

 

 

2.3 유효성 검사 컨트롤 사용 예제

실습

▷유효성 검사를 하는 회원 가입을 만들어 보자!

-시나리오 : 반드시 입력해야 하는 부분으로 Name, ID, Password, Age가 있고 네 가지 항목 중에 한가지라도 입력을 하지 않는다면 각각의 오류 메시지들을 띄운다.

 



 

 

실습 – ID

 

 

 

 

적용된 컨트롤과 유효성 검사 속성 설정

-적용 컨트롤 : RequiredFieldValidator

-ControlToValidate : ID

-Display : None

-ErrorMessage : ID 기입은 필수

 



 

실습 - ID

 

 

 

적용된 컨트롤과 유효성 검사 속성 설정

-적용 컨트롤 : RegularExpressionValidator

-ControlToValidate : ID

-Display : None

-ErrorMessage : ID의 형식이 올바르지 않음

-ValidationExpression :

  \w + ([-+.]\w+)*

-ForeColor = Red

 


 

 

 

실습 - NAME

 

 

 

 

적용된 컨트롤과 유효성 검사 속성 설정

-적용 컨트롤 : RequiredFieldValidator

-ControlToValidate : NAME

-Display : None

-ErrorMessage : 이름을 기입하지 않으셨어요! 이름을 입력해 주세요^^

-ForeColor = #ff0066

 



 

실습 - PW

 

 

 

 

적용된 컨트롤과 유효성 검사 속성 설정

-적용 컨트롤 : RequiredFieldValidator

-ControlToValidate : PW

-Display : None

-ErrorMessage : 비밀번호를 기입하지 않으셨어요! 비민번호를 기입해 주세요^^

-ForeColor = #ff0066

 



 

실습 - AGE

 

 

 

 

적용된 컨트롤과 유효성 검사 속성 설정

-적용 컨트롤 : RequiredFieldValidator

-ControlToValidate : PW

-Display : None

-ErrorMessage : 나이를 기입하지 않으셨어요! 나이를기입해 주세요^^

-ForeColor = #ff0066

 



 

실습 – Validation Summary

 

 

 

 

 

적용된 컨트롤과 유효성 검사 속성 설정

-적용 컨트롤 : Validation Summary

-DisplayModel : List

-ShowMessageBox : false

-ForeColor = #ff0066

-ShowSummary : true

 




 

소스코드 구현(ValidateControl.aspx)

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ValidateControl.aspx.cs" Inherits="ValidateControl" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<HTML>

    <HEAD>

        <title>회원 가입</title>

        <LINK href="Style/Styles.css" type="text/css" rel="stylesheet">

        <script language="javascript">

            function ConfirmUser() {

                if (confirm("가입하시겠습니까?"))

                    return true;

                else

                    return false;

            }

        </script>

    </HEAD>

    <body MS_POSITIONING="FlowLayout">

        <form id="Form1" method="post" runat="server">

            <table cellpadding="5" cellspacing="1" width="300">

                <tr>

                    <td colspan="2"><b>회원가입 가입하기</b></td>

                </tr>

                <tr>

                    <td width="70" align="center">ID</td>

                    <td>

                        <asp:TextBox runat="server" ID="ID"></asp:TextBox>

                        <asp:RequiredFieldValidator id="RequiredFieldValidator1" runat="server"

                            ErrorMessage="* ID 기입은 필수" ControlToValidate="ID"

                            Display="Dynamic" BorderColor="Red" ForeColor="#FF0066"></asp:RequiredFieldValidator>

                            <asp:RegularExpressionValidator id="RegularExpressionValidator2"

                            runat="server" ErrorMessage="* ID 형식이 올바르지 않음"

                            ValidationExpression="\w+([-+.]\w+)*"

                            ControlToValidate="ID" Display="None" BorderColor="Red"></asp:RegularExpressionValidator></td>

 

                </tr>

                <tr>

                    <td align="center">PW</td>

                    <td>

                        <asp:TextBox runat="server" ID="PW" TextMode="Password"

                            Width="100"></asp:TextBox>

                        <asp:RequiredFieldValidator id="RequiredFieldValidator2" runat="server"

                            ErrorMessage="* 비밀번호를 기입하지 않으셨어요! 비밀번호를 기입해 주세요^^" ControlToValidate="PW"

                            Display="None" BorderColor="Red"  ForeColor="#FF0066"></asp:RequiredFieldValidator></td>

                            <asp:RegularExpressionValidator id="RegularExpressionValidator1"

                            runat="server" ErrorMessage="* 비밀번호의 형식이 올바르지 않음"

                            ValidationExpression="\w+([-+.]\w+)*"

                            ControlToValidate="ID" Display="None" BorderColor="Red"  ForeColor="#FF066"></asp:RegularExpressionValidator></td>

                </tr>

                <tr>

                    <td align="center">NAME</td>

                    <td>

                        <asp:TextBox runat="server" ID="NAME" TextMode="Password"

                            Width="100"></asp:TextBox>

                        <asp:RequiredFieldValidator id="RequiredFieldValidator3" runat="server"

                            ErrorMessage="* 이름을 기입하지 않으셨어요! 이름을 입력해 주세요^^" ControlToValidate="NAME"

                            Display="None" BorderColor="Red"  ForeColor="#FF0066"></asp:RequiredFieldValidator></td>

                </tr>

                <tr>

                    <td align="center">AGE</td>

                    <td>

                        <asp:TextBox runat="server" ID="AGE" TextMode="Password"

                            Width="100"></asp:TextBox>

                        <asp:RequiredFieldValidator id="RequiredFieldValidator4" runat="server"

                            ErrorMessage="* 나이를 기입하지 않으셨어요! 나이를 입력해 주세요^^" ControlToValidate="AGE"

                            Display="None" BorderColor="Red"  ForeColor="#FF0066"></asp:RequiredFieldValidator></td>

                </tr>

                <tr>

                    <td colspan="2" align="right">

                        <asp:Button Runat="server" ID="SubscribeButton" Text="등록"

                            Width="100" onclick="SubscribeButton_Click"></asp:Button>

                        <asp:Button Runat="server" ID="MainButton" Text="취소"

                            Width="100" CausesValidation="False"></asp:Button>

                    </td>

                </tr>

                <tr>

                    <td colspan="2" align="center">

                        <asp:ValidationSummary runat="server" id="ValidationSummary1"

                            DisplayMode="List" BorderColor="Red"  ForeColor="#FF0066"></asp:ValidationSummary></td>

                </tr>

            </table>

        </form>

    </body>

</HTML>

 

 

 


소스코드 구현(ValidateControl.aspx.cs)

using System;

using System.Collections.Generic;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Data.SqlClient;

using System.Data;

 

public partial class ValidateControl : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

        ReadData();

    }

 

    private void ReadData()

    {

        string strSql = "SELECT * FROM Member";

 

        SqlConnection objCon = new SqlConnection();

        objCon.ConnectionString = "Data Source=516-05;Initial Catalog=Bumhee;Integrated Security=True";

 

        objCon.Open();

 

        SqlCommand objCmd = new SqlCommand();

        objCmd.Connection = objCon;

        objCmd.CommandText = strSql;

        objCmd.CommandType = CommandType.Text;

 

        SqlDataReader objDr = objCmd.ExecuteReader();

    }

 

 

    protected void Button2_Click(object sender, EventArgs e)

    {

        this.ID.Text = string.Empty;

        this.NAME.Text = string.Empty;

        this.PW.Text = string.Empty;

        this.AGE.Text = string.Empty;

    }

    protected void SubscribeButton_Click(object sender, EventArgs e)

    {

        try

        {

            SubscribeButton.Enabled = false;

 

            string ID = this.ID.Text;

            string NAME = this.NAME.Text;

            string PW = this.PW.Text;

            string AGE = this.AGE.Text;

 

            string strSql = "INSERT into Member Values('" + ID + "','" + NAME + "','" + PW + "','" + AGE + "')"; //입력버튼을 눌렀을때 INSERT SQL 실행

        

            SqlConnection objCon = new SqlConnection();

            objCon.ConnectionString = "Data Source=516-05;Initial Catalog=Bumhee;Integrated Security=True";

            objCon.Open();

 

            //커맨드 객체

            SqlCommand objCmd = new SqlCommand();

            objCmd.Connection = objCon;

            objCmd.CommandText = strSql;

            objCmd.CommandType = CommandType.Text;

 

            objCmd.ExecuteNonQuery();

            objCon.Close();

        }

        catch (Exception error)

        {

            throw new NotImplementedException("이미 처리 되었습니다.");

        }

        Response.Redirect("./ValidateControl.aspx");

 

    }

 

}

 

 

 

728x90

'포트폴리오 자료 > 기술문서' 카테고리의 다른 글

Win32 API 기술문서 (ListBox)  (0) 2016.04.17

이 글을 공유하기

댓글

Designed by JB FACTORY