2009-11-20 7 views
0

사용자 지정 컨트롤과 사용자 지정 유효성 검사기 (BaseValidator 확장)를 만들었습니다. 사용자 정의 컨트롤에서 ValidationProperty ("Values")를 설정했습니다. 문제는 Page.Validate()를 실행하지 않으면 게시가 전송 될 때 유효성 검사가 작동하지 않는다는 것입니다. 그리고 Page.Validate()를 호출하면 모든 유효성 검사기가 실행되어 포스트 백에서 예상하지 못한 결과가 발생합니다.사용자 지정 ASP.NET 유효성 검사기 만들기

그래서 컨트롤 값이 변경되고 해당 컨트롤의 유효성을 검사 할 때 실행되는 사용자 지정 유효성 검사기를 어떻게 만듭니 까?

답변

1

이는 유효성 검사기의 작동 방식이 아닙니다. ValidationGroup 설정을 사용하지 않는 한 페이지의 모든 유효성 검사기가 자동으로 실행됩니다. Page.Validate()를 명시 적으로 호출 할 필요가 없습니다. 당신은 그러나이 같은 검사에서 코드를 포장해야합니까 :

클라이언트 측 유효성 검사기는 달리
if(Page.IsValid) 
{ 
    //do something here 
} 

는 서버 측 유효성 검사는 다시 게시하고 정상적으로 처리 이벤트에서 페이지를 방지하지 않습니다.

컨트롤 값이 변경 될 때만 유효성을 검사하는 컨트롤을 만들려면 유효성 검사기를 실행 한 후에 변경 이벤트가 발생하므로 약간의 해커가 필요합니다.

+0

예, 실제로는 슬픈 일입니다. 두 개의 유효성 검사기로 두 개의 필드를 만들고 필드 중 하나에 AutoPostBack 속성을 true로 설정하면 클라이언트 측에서 첫 번째 필드의 유효성을 검사 한 후 오류 메시지를 표시 할 때 두 번째 필드에 텍스트를 입력하면 모든 오류 메시지가 사라집니다. –

0

유효성 검사 그룹을 사용해 보셨습니까?

관련 문제