2011-12-09 1 views
1

브라우저에서 asp.net 유효성 검사 서버 컨트롤을 비활성화하려고합니다. 온라인으로 확인했지만 서버 측 유효성 검사를 비활성화하는 방법을 찾지 못했습니다. JS/jQuery를 사용하여 클라이언트 측에서만 비활성화 할 수 있습니다.브라우저에서 asp.net 웹 양식에 대한 서버 측 유효성 검사를 비활성화하는 방법은 무엇입니까?

다음은 시나리오입니다. 확인란이 있고 선택 상자에 텍스트 상자 집합이 표시됩니다. 체크 박스가 체크 된 경우에만 필수 입력란 검사기가 텍스트 상자에 대해 실행됩니다. 난 체크 박스에서 다시 게시를하고 싶지 않아. 실제로 이러한 chceck 상자는 jQuery 템플릿으로 생성되므로 포스트 백이 비활성화 유효성을 활성화하는 옵션이 아닙니다.

일부 설정을 사용하여 브라우저에서 컨트롤의 .CausesValidation 속성을 사용하지 않도록 설정할 수있는 방법이 있는지 알고 싶습니다. 아니면 page_load 전에 일부 이벤트에서 유효성 검사를 위해 고려해야 할 컨트롤을 캡처하는 방법이 있습니까?

허용 답변에 따라 [업데이트] , 여기 내 솔루션입니다 :

<form id="form1" runat="server"> 
<div> 
    <asp:TextBox ID="textbox1" runat="server"></asp:TextBox> 
    <asp:RequiredFieldValidator ID="req1" ControlToValidate="textbox1" runat="server" 
     ErrorMessage="enter text"></asp:RequiredFieldValidator> 
    <asp:TextBox ID="textbox2" runat="server"></asp:TextBox> 
    <asp:RequiredFieldValidator ID="req2" ControlToValidate="textbox2" runat="server" 
     ErrorMessage="enter text for 2"></asp:RequiredFieldValidator> 
    <asp:CheckBox ID="check1" runat="server" Text="choose" /> 
    <asp:Button ID="submitBtn" runat="server" OnClick="submitBtn_Click" Text="submit" /> 
    <asp:CustomValidator ID="cvBox" runat="server" ErrorMessage="Error" ValidationGroup="prueba" 
     OnServerValidate="Validarcaja"></asp:CustomValidator> 
    <asp:ValidationSummary ID="summary" runat="server" /> 
</div> 
</form> 



protected void Page_Load(object sender, EventArgs e) 
{ 
    req1.Enabled = false; 
    req2.Enabled = false; 
} 
protected void submitBtn_Click(object sender, EventArgs e) 
{ 
    if (Page.IsPostBack) 
    { 
     Page.Validate(); 
     if (Page.IsValid) 
     { 
      Response.Write("valid form"); 
     } 
     else 
     { 
      Response.Write("invalid form"); 
     } 
    } 
} 
protected void Validarcaja(object source, ServerValidateEventArgs args) 
{ 
    if (check1.Checked) 
    { 
     req1.Enabled = true; 
     req1.Validate(); 

    } 
} 

답변

0

나를 위해이 솔루션은 OnServerValidate 방법으로 직접 CustomValidator를 사용하는 것입니다.

OnServerValidate 메서드에서 확인란이 선택되어 있는지 확인합니다.이 경우 텍스트 상자가 채워 졌는지 확인합니다. CausesValidation 속성을 변경하지 않아도됩니다. 유일한 조건은 "ControlToValidate"속성을 포함하지 않는 것입니다. 텍스트 상자가 비어 있으면 CustomValidator가 실행되지 않습니다. 그래서 코드는 다음과 같이 될 것이다 :

<asp:ValidationSummary ID="vs" runat="server" ValidationGroup="prueba" /> 
    <asp:CheckBox ID="chb" runat="server" Text="Check" /> 
    <asp:TextBox ID="txbBox" runat="server"></asp:TextBox>  
    <asp:CustomValidator ID="cvBox" runat="server" ErrorMessage="Error" ValidationGroup="prueba" 
    OnServerValidate="Validarcaja"></asp:CustomValidator> 
    <asp:Button ID="btn" runat="server" Text="Prueba" /> 

그리고 숨김 :

 protected void Page_Load(object sender, EventArgs e) 
      { 
if (IsPostBack) 
      { 
       Page.Validate(); 
      } 
      } 

      protected void Validarcaja(object source, ServerValidateEventArgs args) 
      { 
       if (chb.Checked) 
       { 
        if (txbBox.Text == String.Empty) 
        { 
         cvBox.IsValid = false;      
        } 

       } 
      } 
+0

감사 @netadictos .. :) – Amit

+0

@Amit 유효성 검사기의 좋은 체인 ;-) – netadictos

관련 문제