ASP.NET 서버 컨트롤의 특별한 경우 유효성 검사 결과

Visual Studio 2010

업데이트: 2007년 11월

유효성 검사를 사용하면 사용자가 입력한 내용이 지정한 조건에 맞는지 확인할 수 있습니다. 이 검사는 대부분의 경우 간단한 작업입니다. 그러나 때로는 입력 내용의 유효성이 검사되는 상황에서 특별한 조건이 도입되는 경우가 있습니다. 이러한 조건이 무엇이며 유효성 검사가 수행되는 방법 및 유효성 검사의 예상 결과를 이해하는 것이 중요합니다.

RequiredFieldValidator 컨트롤 외의 모든 유효성 검사 컨트롤은 비어 있는 필드를 유효한 것으로 간주합니다. 사용자가 필드를 비워 두지 못하게 하려면 RequiredFieldValidator 컨트롤을 사용해야 합니다. 예를 들어, RangeValidator 컨트롤을 날짜 필드에 연결하면 사용자가 지정한 범위의 날짜를 입력하거나 필드가 비어 있는 경우 유효성 검사를 통과합니다. 사용자가 날짜를 반드시 입력하게 하려면 범위 검사와 함께 날짜 필드에 RequiredFieldValidator 컨트롤을 추가해야 합니다.

CompareValidator 컨트롤을 사용할 때는 다른 컨트롤의 값에 대해 유효성 검사가 수행되도록 지정할 수 있습니다. 예를 들어 시작 날짜와 끝 날짜를 입력하는 두 필드가 있을 수 있습니다. CompareValidator 컨트롤을 사용하면 시작 날짜가 항상 끝 날짜보다 빠르거나 같게 할 수 있습니다.

c6k4b2x3.alert_security(ko-kr,VS.100).gif보안 정보:

ASP.NET 웹 페이지의 사용자 입력에는 잠재적으로 악의성이 있는 클라이언트 스크립트가 포함될 수 있습니다. 기본적으로 페이지에서는 사용자 입력 내용에 스크립트나 HTML 요소가 포함되어 있지 않은지 유효성을 검사합니다. 자세한 내용은 스크립트 악용 개요를 참조하십시오.

유효성 검사 컨트롤에서 다른 컨트롤의 값을 확인할 수 없어도 오류가 발생하지 않고 유효성 검사는 통과합니다. 이는 다른 컨트롤의 값이 생략되거나 CompareValidator 컨트롤의 데이터 형식으로 변환할 수 없는 경우 발생합니다.

이러한 컨트롤에서 수행되는 테스트와 가능한 결과는 다음과 같습니다.

  • 원본 컨트롤의 ControlToValidate 속성에 입력한 대상 컨트롤에 값이 없으면 IsValid 속성이 true인 것으로 간주되므로 유효성 검사에 통과합니다.

  • ControlToValidate 속성의 대상 컨트롤 값을 적절한 데이터 형식으로 변환할 수 없으면 IsValidfalse로 간주됩니다.

  • ControlToCompare 속성의 대상 컨트롤 값을 적절한 데이터 형식으로 변환할 수 없으면 IsValidtrue로 간주됩니다.

  • 마지막으로, 이러한 모든 테스트에 통과하면 두 컨트롤 모두 비어 있지 않은 것이고 데이터 형식으로 변환할 수 있는 것이므로 컨트롤에서 실제 비교를 수행하고 IsValid를 설정합니다.

이 방법을 사용하면 잘못된 입력 한 가지에 대해 여러 개의 오류가 보고되는 것을 막을 수 있습니다. 유효성 검사 컨트롤은 하나의 값에 대해서만 테스트 및 보고를 하며 오류가 발생한 경우 되도록 자세하게 메시지를 표시할 수 있도록 디자인되었습니다.

예를 들어 끝 날짜의 예제에서 사용자가 잘못된 시작 날짜를 입력했다고 가정합시다. 그리고 나서 사용자는 끝 날짜를 입력합니다. 유효성 검사가 수행되면 대체로 서버에서는 잘못된 날짜 하나로 인해 시작 날짜 필드와 끝 날짜 필드 모두에 대해 오류가 발생할 수 있습니다. 이러한 결과를 막기 위해서는 다른 필드에 의존하는 유효성 검사인 끝 날짜 유효성 검사에서 오류를 발생시키지 말아야 합니다.

따라서 각 필드에 대해 충분한 유효성 검사를 제공해야 합니다. 이 예제에서 사용자가 시작 날짜 필드에 적절한 날짜를 입력하는지 확인하는 것은 필드 작성자의 책임입니다. 특정 입력 내용을 테스트하는 유효성 검사 컨트롤 외에도 RequiredFieldValidator 컨트롤을 포함시켜야 하는 경우가 많습니다. Operator 속성을 DataTypeCheck로 설정한 CompareValidator 컨트롤을 추가할 때도 다른 값이나 컨트롤과 비교하지 않고 간단한 검사를 수행하므로 유용합니다.

표시: