2012-01-27 4 views
1

여기서 잘못된 점을 모릅니다. 이것은 다른 누군가가 개발 한 페이지이며 문제 중 하나를 해결하려고합니다.asp : CustomValidator가 'false'를 반환하지 않습니다.

시나리오 :

ASP.NET 사이트.

Login.aspx에는 <asp:login>이 있으며 세 가지 유효성 검사 그룹이 있습니다. Login.aspx.cs는 "user_login"의 부분 클래스입니다.

각 유효성 검사 그룹에는 텍스트 상자와 연관 customvalidator가 있습니다. 모든 세 개의 사용자 정의 유효성 검사기는 무언가가 해당 텍스트 상자에 입력 될 때 트리거되지만 문제는 유효성 검사가 실패 할 때 첫 번째 텍스트 상자 (validationgroup = 1에 바인딩 됨) 만 false를 반환합니다.

두 번째 및 세 번째 경우 customvalidator가 트리거되지만 유효성 검사 문제가 있고 "args.IsValid = false;"를 설정 한 후에도 프로세스가 계속 실행되어야하는지 계속됩니다.

여기에 무슨 일이 일어나고 있는지 알 수 없습니다. customvalidator가 false를 반환하고 싶습니다. 최악의 경우, 유효성 검사가 실패하면 컨트롤을 '텍스트 상자'로 되돌릴 수있는 방법이 있습니까?

다음은 사용 된 사용자 정의 유효성 검사기입니다.

<asp:CustomValidator ID="ExistingIdValidator" runat="server" ControlToValidate="NewUserName" 
    ValidateEmptyText="true" ValidationGroup="NewUserForm" 
    OnServerValidate="NewUserNameCheck_ServerValidate"> 
</asp:CustomValidator> 


protected void NewUserNameCheck_ServerValidate(object source, ServerValidateEventArgs args) 
{ 
    CustomValidator validator = source as CustomValidator; 
    if (validator != null) 
    { 
     string NewuserNameValue = this.NewUserName.Text; 
     Guid registeredUserId = (Guid)Membership.GetUser(NewuserNameValue).ProviderUserKey; 
     if (registeredUserId != null) 
     { 
      validator.IsValid = false; 
      this.FailureText_New.Text = "This UserID already exists. Please login as existing user"; 
      args.IsValid = false; 
     } 
    } 
} 
+0

코드가 여기에 표시되지 않습니다. 여전히 시도 중입니다 – Anirudh

+0

@ jadarnel27 : 내 코드를 수정했는지는 알 수 없습니다. 원래 게시물의 맞춤 유효성 검사기 코드 인 경우 아직 유효하지 않습니다. – Anirudh

+0

자바 스크립트 함수 NewUserNameCheck_ServerValidate를 표시 할 수 있습니까? –

답변

0

ASP.NET 서버 측 유효성 검사에 대한 재미있는 점은 자동으로 클릭 이벤트가 실행되지 못하도록한다는 것입니다. 마치 검증 절차가 수행 된 것처럼 결과가 무시됩니다. 따라서 버튼 이벤트에 가장 먼저 들어가는 것은 if (!Page.IsValid) return;입니다. 이것이 나머지 이벤트가 실행되는 것을 방지하는 방법이며, 이는 사용자가 양식의 실수를 수정하도록하는 방법입니다.