Запускайте обязательную проверку полей asp.net, только если заполнено хотя бы одно из полей в группе - PullRequest
1 голос
/ 21 декабря 2011

У меня есть форма на странице 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 Ответ

1 голос
/ 21 декабря 2011

Можно сказать, использовать обязательные поля в разделе 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 в любом случае, и заставил ли он заполнить все поля, чтобы вернуть аргументы проверки вашего сервера в значение true.Если он не изменил раздел 2 или не предоставил ему какие-либо данные, используйте метод, который проверяет это и устанавливает для вашей проверки значение true, чтобы позволить ему продолжить.

...