Share via


ASP.NET 웹 페이지에서 사용자 입력 유효성 검사

업데이트: 2007년 11월

유효성 검사 컨트롤을 사용하여 ASP.NET 웹 페이지에 입력 유효성 검사를 추가할 수 있습니다. 유효성 검사 컨트롤은 날짜가 유효한지 또는 값이 특정 범위 내에 있는지 등을 테스트하는 경우와 같이 일반적인 형식의 모든 표준 유효성 검사에 쉽게 사용할 수 있는 메커니즘과 사용자가 직접 작성한 유효성 검사를 제공합니다. 또한 유효성 검사 컨트롤을 사용하면 사용자에게 오류 정보를 나타내는 방식을 사용자 지정할 수 있습니다.

유효성 검사 컨트롤은 HTML 컨트롤과 웹 서버 컨트롤을 둘 다 포함하여 ASP.NET 웹 페이지에 추가하는 모든 컨트롤과 함께 사용할 수 있습니다. 자세한 내용은 ASP.NET 웹 서버 컨트롤 개요를 참조하십시오.

보안 정보:

기본적으로 ASP.NET 웹 페이지에서는 악의적인 입력이 있는지 자동으로 검사합니다. 자세한 내용은 스크립트 악용 개요를 참조하십시오.

유효성 검사 컨트롤 사용

다른 서버 컨트롤을 추가하는 것처럼 유효성 검사 컨트롤을 페이지에 추가하여 사용자 입력이 유효한지 검사할 수 있습니다. 범위 검사나 패턴 일치 같은 다양한 형식의 유효성 검사를 수행할 수 있는 컨트롤이 있습니다. 전체 유효성 검사 형식 목록을 보려면 ASP.NET 서버 컨트롤의 유효성 검사 형식을 참조하십시오. 각 유효성 검사 컨트롤은 페이지에서 다른 곳에 있는 입력 컨트롤(서버 컨트롤)을 참조합니다. 사용자 입력이 처리되는 경우(예: 페이지가 제출되는 경우) 유효성 검사 컨트롤은 사용자 입력을 테스트하고 각 항목이 테스트를 통과했는지 여부를 나타내도록 속성을 설정합니다. 모든 유효성 검사 컨트롤이 호출되면 실패한 유효성 검사가 있는지 여부를 나타내는 속성이 페이지에 설정됩니다.

공통 그룹에 속하는 유효성 검사 컨트롤의 유효성을 동시에 검사하도록 유효성 검사 컨트롤을 유효성 검사 그룹으로 만들 수 있습니다. 유효성 검사 그룹을 사용하면 페이지의 관련 컨트롤에 대해 선택적으로 유효성 검사를 설정하거나 해제할 수 있습니다. ValidationSummary 컨트롤을 표시하거나 GetValidators 메서드를 호출하는 등 다른 유효성 검사 작업을 수행하는 경우 유효성 검사 그룹을 참조할 수 있습니다.

사용자가 직접 코드를 작성하여 페이지 및 개별 컨트롤의 상태를 테스트할 수 있습니다. 예를 들어 사용자가 입력한 정보로 데이터 레코드를 업데이트하기 전에 유효성 검사 컨트롤의 상태를 테스트할 수 있습니다. 잘못된 상태를 발견하면 업데이트를 건너뜁니다. 일반적으로 유효성 검사가 실패하면 모든 처리를 건너뛰고 사용자에게 페이지가 반환됩니다. 그런 다음 오류가 발견된 유효성 검사 컨트롤에서 페이지에 오류 메시지를 표시합니다. ValidationSummary 컨트롤을 사용하여 모든 유효성 검사 오류를 한 곳에 표시할 수 있습니다.

참고:

GridView, FormView, DetailsView 등과 같이 데이터를 업데이트, 삽입 및 삭제하는 데이터 바인딩된 컨트롤은 데이터 업데이트 작업을 수행하기 전에 유효성 검사를 통과했는지 자동으로 확인합니다.

유효성 검사를 수행하는 경우

유효성 검사 컨트롤은 서버 코드에서 입력 검사를 수행합니다. 사용자가 서버에 페이지를 제출하면 유효성 검사 컨트롤이 호출되어 사용자 입력을 컨트롤 단위로 검사합니다. 입력 컨트롤에서 유효성 검사 오류가 발생하면 페이지 자체가 유효하지 않은 상태로 설정되므로 코드를 실행하기 전에 유효성을 테스트할 수 있습니다. 유효성 검사는 페이지가 초기화된 후, 즉 뷰 상태 및 다시 게시 데이터가 처리된 후에 변경 또는 클릭 이벤트 처리기가 호출되기 전에 수행됩니다.

ECMAScript(Javascript)를 지원하는 브라우저로 작업 중인 경우에는 유효성 검사 컨트롤에서 클라이언트 스크립트를 사용하여 유효성 검사를 수행할 수도 있습니다. 이렇게 하면 오류가 즉시 발견되고 사용자가 오류가 포함된 컨트롤을 벗어나면 바로 오류 메시지가 표시되므로 응답 시간이 향상될 수 있습니다. 클라이언트측 유효성 검사를 수행할 수 있는 경우에는 오류 메시지의 레이아웃을 더 상세히 제어할 수 있으며 메시지 상자에 오류 요약을 표시할 수 있습니다. 자세한 내용은 ASP.NET 서버 컨트롤용 클라이언트측 유효성 검사를 참조하십시오.

ASP.NET은 클라이언트에서 유효성 검사 컨트롤이 이미 수행되었더라도 서버 기반 이벤트 처리기 내에서 유효성을 테스트할 수 있도록 서버에서 유효성 검사를 수행합니다. 또한 서버에서 다시 테스트하면 클라이언트 스크립트 검사를 비활성화하거나 변경하여 사용자가 유효성 검사를 생략하지 못하게 할 수 있습니다.

유효성 검사 컨트롤의 Validate 메서드를 호출하여 사용자 코드에서 유효성 검사를 호출할 수 있습니다. 자세한 내용은 ASP.NET 서버 컨트롤에서 프로그래밍 방식으로 유효성 검사를 참조하십시오.

여러 조건의 유효성 검사

일반적으로 각 유효성 검사 컨트롤은 한 가지 테스트만 수행합니다. 그러나 여러 조건을 검사할 수도 있습니다. 예를 들어 사용자 입력을 필수 항목으로 지정하고 동시에 특정 범위의 날짜만 허용되도록 사용자 입력을 제한할 수 있습니다.

페이지의 입력 컨트롤에 유효성 검사 컨트롤을 여러 개 연결할 수 있습니다. 이런 경우 유효성 검사 컨트롤에서 수행하는 테스트는 논리 AND 연산자를 사용하여 확인됩니다. 즉, 사용자가 입력한 데이터는 모든 테스트를 통과해야 유효한 것으로 간주됩니다.

경우에 따라 다양한 형식의 입력을 유효하게 처리할 수 있습니다. 예를 들어 전화 번호를 입력해야 하는 경우 사용자가 전화 번호, 시외 번호 또는 국제 번호를 입력하도록 할 수 있습니다. 사용자 입력은 모든 테스트를 통과해야 유효한 것으로 간주되므로 이 경우에는 유효성 검사 컨트롤을 여러 개 사용할 수 없습니다. 이 유형의 테스트(하나의 테스트만 통과해야 하는 논리 OR 연산)를 수행하려면 RegularExpressionValidator 유효성 검사 컨트롤을 사용하고 컨트롤 내에 유효한 패턴을 여러 개 지정합니다. 또는 CustomValidator 유효성 검사 컨트롤을 사용하고 유효성 검사 코드를 직접 작성할 수 있습니다.

오류 정보 표시

일반적으로 유효성 검사 컨트롤은 렌더링된 페이지에 표시되지 않습니다. 그러나 컨트롤에서 오류를 발견하면 사용자가 지정한 오류 메시지 텍스트가 표시됩니다. 다음 표에 나열된 여러 가지 방법을 사용하여 오류 메시지를 표시할 수 있습니다.

표시 방법

설명

인라인

각 유효성 검사 컨트롤은 정해진 위치(일반적으로 오류가 발생한 컨트롤 옆)에 개별적으로 오류 메시지를 표시할 수 있습니다.

요약

유효성 검사 오류를 수집하여 한 곳(예: 페이지의 맨 위)에 표시할 수 있습니다. 이 방법은 오류가 있는 입력 필드 옆에 메시지를 표시하는 방법과 함께 사용될 경우가 많습니다. 사용자가 Internet Explorer 4.0 이상에서 작업 중인 경우에는 요약 정보가 메시지 상자에 표시될 수 있습니다.

유효성 검사 그룹을 사용할 경우에는 별도의 각 그룹에 대해 ValidationSummary 컨트롤이 필요합니다.

정해진 위치 및 요약

정해진 위치에 표시되는 오류 메시지와 요약 정보로 표시되는 오류 메시지가 다를 수 있습니다. 이 옵션을 사용하면 짧은 오류 메시지는 정해진 위치에 나타내고 자세한 내용은 요약에 나타낼 수 있습니다.

사용자 지정

오류 정보를 캡처하고 출력을 직접 디자인하여 오류 메시지 표시를 사용자 지정할 수 있습니다.

정해진 위치 또는 요약 표시 옵션을 사용하는 경우 HTML을 통해 오류 메시지의 서식을 지정할 수 있습니다.

보안 정보:

사용자 지정 오류 메시지를 만드는 경우 악의적인 사용자가 응용 프로그램을 손상시킬 수 있는 정보를 표시하지 않아야 합니다. 자세한 내용은 방법: 안전한 오류 메시지 표시를 참조하십시오.

유효성 검사 개체 모델

개별 유효성 검사 컨트롤과 페이지에 의해 노출되는 개체 모델을 사용하여 유효성 검사 컨트롤과 상호 작용할 수 있습니다. 각 유효성 검사 컨트롤은 해당 컨트롤에 대한 유효성 검사 테스트를 통과했는지 여부를 확인하기 위해 테스트할 수 있는 IsValid 속성을 노출합니다. 또한 페이지는 해당 페이지에 있는 모든 유효성 검사 컨트롤의 IsValid 상태를 요약하는 IsValid 속성을 노출합니다. 이 속성을 사용하면 처리를 계속할 수 있는지 여부를 결정하기 위해 단일 테스트를 수행할 수 있습니다.

또한 페이지는 해당 페이지의 모든 유효성 검사 컨트롤 목록을 포함하는 Validators 컬렉션을 노출합니다. 이 컬렉션을 전체 반복하여 개별 유효성 검사 컨트롤의 상태를 검사할 수 있습니다.

참고:

클라이언트측 유효성 검사의 개체 모델에는 차이점이 약간 있습니다. 자세한 내용은 ASP.NET 서버 컨트롤용 클라이언트측 유효성 검사를 참조하십시오.

유효성 검사 사용자 지정

다음과 같은 방법을 사용하여 유효성 검사 프로세스를 사용자 지정할 수 있습니다.

  • 오류 메시지의 서식, 텍스트, 위치 등을 지정할 수 있습니다. 또한 오류 메시지를 개별적으로 나타낼지 아니면 요약 형태로 나타낼지도 지정할 수 있습니다.

  • CustomValidator 컨트롤을 사용하여 사용자 지정 유효성 검사를 만들 수 있습니다. 이 컨트롤은 사용자가 지정한 논리를 호출하지만 그 외에는 오류 상태 설정, 오류 메시지 표시 등에 있어서 다른 유효성 검사 컨트롤과 동일합니다. 이 컨트롤은 사용자 지정 유효성 검사 논리를 쉽게 만들 수 있는 방법을 제공하며 페이지의 유효성 검사 프레임워크에도 계속 사용됩니다.

  • 클라이언트측 유효성 검사를 수행하는 경우 유효성 검사 호출을 가로챈 다음 사용자가 직접 만든 유효성 검사 논리를 대신 사용하거나 추가할 수 있습니다.

참고 항목

기타 리소스

유효성 검사 ASP.NET 컨트롤