2011-12-21 121 views
1

我在具有2個部分的asp.net(VB)頁面上有一個表單。只有在組中至少有一個字段完成的情況下才能運行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節使用必填字段,但第二節使用自定義的驗證。像這樣的東西。

<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部分或給它提供任何數據,則可以使用一種方法來檢查並確認驗證結果爲真,以允許他繼續。

相關問題