我在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>
答案 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节或给它任何数据,那么检查并将你的验证设置为真的方法允许他继续进行。