2012-03-31 3 views

답변

6

이에 대한 CustomValidator을 사용할 수 있지만이 작업을 얻기 위해 알아야 할 것이 있습니다. 문제는 유효성 검사기에서 ControlToValidate 속성을 설정하면 해당 컨트롤에 값이있는 경우에만 발생한다는 것입니다. 상황에 따라 값이없는 경우 구체적으로 유효성을 검사하려고합니다.

이 문제를 해결하려면 유효성 검사기에 ControlToValidate 속성을 설정하지 마십시오. 그런 다음 클라이언트 및 서버 유효성 검증 핸들러에서 두 텍스트 상자에 직접 액세스해야합니다. 클라이언트 확인 기능에서

은 당신이 뭔가를 할 수 있습니다 :

: 이렇게 될 수

protected void OnCustomServerValidate(object source, ServerValidateEventArgs e) 
{ 
    e.IsValid = true; 
    // Don't validate anything if `OtherTextBox` is empty 
    if (OtherTxtBox.Text.Trim() == String.Empty) 
    {     
     return; 
    } 

    // If we got this far then we need to set IsValid to false if the ControlToValidate has no value 
    if (TextBoxToValidate.Text.Trim() == String.Empty) 
    { 
     e.IsValid = false; 
    }    
} 

과 영문을 :

function OnCustomClientValidate(source, e) { 
    e.IsValid = true; 
    var otherTextBoxValue = $('#<%=OtherTxtBox.ClientID%>').val().trim();    
    if (otherTextBoxValue == '') {     
     return; 
    } 
    var controlToValidateValue = $('#<%=TextBoxToValidate.ClientID%>').val().trim(); 
    if (controlToValidateValue == '') { 
     e.IsValid = false; 
    } 
} 

서버 확인 방법은 다음과 같을 수 있습니다

<asp:TextBox ID="OtherTextBox" runat="server"></asp:TextBox> 
<asp:CustomValidator ID="MyCustomValidator" runat="server" ClientValidationFunction="OnCustomClientValidate" OnServerValidate="OnCustomServerValidate" Display="Dynamic" ErrorMessage="Please enter a value"></asp:CustomValidator> 
<asp:TextBox ID="TextBoxToValidate" runat="server"></asp:TextBox> 

이 접근법을 사용할 때 (의도 된) 컨트롤 t 우리가 그 통제를 명시하지 않았기 때문에 유효성이 검증된다. 따라서 폼을 제출할 때 클라이언트 측 유효성 검사가 실행되지만 유효성 검사가 실패하면 다시 게시가 취소됩니다.

+0

대단히 감사합니다. –

1

이렇게 유효성 검사를 수행하는 방법 중 하나는 사용자 정의 유효성 검사기를 사용하는 것입니다. 그런 다음 사용자 지정 유효성 검사기를 연결하여 유효성 검사 서버 쪽 또는 클라이언트 쪽을 수행 할 수 있습니다.

필수 MSDN의 링크 : How to: Validate with a Custom Function for ASP.NET Server Controls

관련 문제