2011-12-21 10 views
1

2つのセクションを持つasp.net(VB)ページ上にフォームがあります。グループ内のフィールドのうちの少なくとも1つが完了している場合にのみasp.netを実行する必要があります。

セクション1はすべて必須ですが、セクション2はオプションです。ただし、セクション2が開始されている場合は、すべてのフィールドが必要です。

私はこのバリデーションを作成するために必要なロジックについて固執しています。

<form runat="server"> 

    <div> 
     <asp:TextBox runat="server" ID="field1a" Text="Name" /> 
     <asp:TextBox runat="server" ID="field1b" Text="City" /> 

     <asp:RequiredFieldValidator runat="server" ID="field1aVal" Text="Name Required" ControlToValidate="field1a" InitialValue="Name" /> 
     <asp:RequiredFieldValidator runat="server" ID="field1bVal" Text="City Required" ControlToValidate="field1b" InitialValue="City" /> 
    </div> 


    <div> 
     <asp:TextBox runat="server" ID="field2a" Text="Name" /> 
     <asp:TextBox runat="server" ID="field2b" Text="City" /> 

     <asp:RequiredFieldValidator runat="server" ID="field2aVal" Text="Name Required" ControlToValidate="field2a" InitialValue="Name" /> 
     <asp:RequiredFieldValidator runat="server" ID="field2bVal" Text="City Required" ControlToValidate="field2b" InitialValue="City" /> 
    </div> 

    <asp:button runat="server" ID="btnSubmit" Text="Submit" OnClick="submitForm" /> 

</form> 

答えて

1

Idはセクション1での使用に必要なフィールドを言うが、セクション2にカスタムバリデータを使用します。

は、ここに私のコードです。このようなもの。そして、コード内

<asp:CustomValidator ID="CustomValidator2" runat="server" 
Display="Dynamic" EnableClientScript="False" 
ErrorMessage="You must select one checkbox or click all offices. " OnServerValidate="OfficeVaildator"> 
</asp:CustomValidator>  

は背後に明らかにそれは本当に簡単です、あなたのロジックこの

Sub OfficeVaildator(ByVal source As Object, ByVal args As ServerValidateEventArgs) 
        If OfficeCheckBoxs.Checked Then 
         args.IsValid = True 
        Else 
         args.IsValid = False 
        End If 
End Sub 

よう

何かをします。とにかくユーザーがセクション2を変更したかどうか、彼がすべてのフィールドを入力してサーバーの検証引数を真に返すようにしたかどうかを確認するとよいでしょう。彼がセクション2を変更しなかった場合、またはそれをチェックし、検証を真に設定して彼が進めることを可能にする方法をデータに与えます。

関連する問題