仅当组中的至少一个字段完成时,才运行asp.net必需的字段验证

时间:2011-12-21 12:07:27

标签: vb.net validation requiredfieldvalidator

我在asp.net(VB)页面上有一个表单,它有2个部分。

始终需要第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 个答案:

答案 0 :(得分:1)

我说在第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部分,如果他确实让他完成所有字段以返回您的服务器验证参数为true。如果他没有改变第2节或给它任何数据,那么检查并将你的验证设置为真的方法允许他继续进行。