방법: 프로그래밍 방식으로 ASP.NET 서버 컨트롤 유효성 검사

Visual Studio 2010

업데이트: 2007년 11월

유효성 검사 컨트롤은 사용자 입력을 테스트하고, 오류 상태를 설정하고, 오류 메시지를 생성합니다. 이 컨트롤은 페이지 처리의 흐름을 변경하지는 않습니다. 예를 들어, 사용자 입력 오류가 발견되어도 코드를 건너뛰지 않습니다. 대신 응용 프로그램별 논리를 수행하기 전에 코드에서 컨트롤 상태를 테스트합니다. 오류가 발견되면 코드 실행을 중지하므로 페이지는 계속 처리되며 오류 메시지와 함께 사용자에게 반환됩니다.

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

기본적으로 ASP.NET 웹 페이지에서는 악의적인 사용자가 응용 프로그램에 스크립트 또는 HTML 요소를 전송하지 않는지 자동으로 확인합니다. 자세한 내용은 스크립트 악용 개요를 참조하십시오.

일반적인 페이지 전체의 상태와 개별 컨트롤의 상태를 테스트할 수 있습니다. 이 작업은 대체로 페이지용으로 만든 이벤트 처리기에서 수행합니다.

일반 오류 상태를 테스트하려면

  • 코드에서 페이지의 IsValid 속성을 테스트합니다. 이 속성은 논리곱을 사용하여 페이지에 있는 모든 유효성 검사 컨트롤의 IsValid 속성 값을 모읍니다. 유효성 검사 컨트롤이 하나라도 잘못 설정되면 페이지의 속성에서 false가 반환됩니다.

    dh9ad08f.alert_note(ko-kr,VS.100).gif참고:

    유효성 검사 정보는 페이지의 초기화 또는 로드 단계에서 사용할 수 없습니다. 그러나 Page_Load 중 수동으로 Validate 메서드를 호출한 다음 페이지의 IsValid 속성을 테스트할 수 있습니다. 페이지 상태에 대한 자세한 내용은 ASP.NET 페이지 수명 주기 개요를 참조하십시오.

    다음 코드 예제에서는 단추에 대한 이벤트 처리기를 보여 줍니다. 코드에서는 페이지의 IsValid 속성을 테스트합니다. 페이지가 브라우저로 자동 반환되고 유효성 검사 컨트롤에서 자체 오류 메시지를 표시하므로 else 절은 필요가 없습니다.

    void Button1_Click(object sender, System.EventArgs e)
    {
        if (IsValid)
        {
            // Perform database updates or other logic here.
        }
    }
    
    
    

각 컨트롤의 오류 상태를 테스트하려면

  • 모든 유효성 검사 컨트롤에 대한 참조가 포함된 페이지의 Validators 컬렉션을 반복합니다. 그런 다음 각 유효성 검사 컨트롤의 IsValid 속성을 검사할 수 있습니다.

    dh9ad08f.alert_note(ko-kr,VS.100).gif참고:

    Page_Load 중 이 검사를 수행하려면 먼저 Validate 메서드를 수동으로 호출해야 합니다.

    다음 코드 예제에서는 개별 유효성 검사 컨트롤의 상태 정보를 가져오는 방법을 보여 줍니다.

    if (this.IsPostBack)
    {
        this.Validate();
        if (!this.IsValid)
        {
            string msg = "";
            // Loop through all validation controls to see which
            // generated the errors.
            foreach (IValidator aValidator in this.Validators)
            {
                if (!aValidator.IsValid)
                {
                    msg += "<br />" + aValidator.ErrorMessage;
                }
            }
            Label1.Text = msg;
        }
    }
    
    
    
표시: