Question

J'ai le code suivant. Lorsque j'appuie sur le bouton de sauvegarde, trois requiredfieldvalidators fonctionnent correctement et fonctionnent correctement. Cependant, mon validateur personnalisé ne fonctionne pas. Il ne déclenche pas l'événement du tout. J'ai des zones de texte standard et un contrôle validationsummary. Y a-t-il une raison pour laquelle cela pourrait ne pas fonctionner?

<asp:RequiredFieldValidator runat="server" ControlToValidate="txtForename" Display="None" ErrorMessage="Must enter a valid first name." />
<asp:RequiredFieldValidator runat="server" ControlToValidate="txtSurname" Display="None" ErrorMessage="Must enter a valid last name." />
<asp:RequiredFieldValidator runat="server" ControlToValidate="txtEmail" Display="None" ErrorMessage="Must enter a valid e-mail address." />

<asp:CustomValidator runat="server" OnServerValidate="CheckAtLeastOnePhoneNumber" 
        ErrorMessage="Must enter at least one phone number." Display="None" 
        ValidateEmptyText="True" />

<script runat="server">
    void CheckAtLeastOnePhoneNumber(Object s, ServerValidateEventArgs e)
    {
        if (txtMobileNumber.Text.Equals("") &&
            txtWorkNumber.Text.Equals("") &&
            txtHomeNumber.Text.Equals(""))
        {
            e.IsValid = false;
        }
    }
</script>
Était-ce utile?

La solution

Je l'ai corrigé.

Le contrôle de validateur personnalisé est une vérification côté serveur. Les autres validateurs (côté client) sont donc exécutés en premier. Ceci est un peu trompeur car le contrôle validationsummary affiche généralement toutes les erreurs du validateur.

En supposant que le nom, l'e-mail, etc. soient valides, il ne serait alors envoyé au serveur et généré l'erreur de validation.

Autres conseils

C'est vrai. Cela fonctionne comme ça. Si vous souhaitez qu'un validateur personnalisé fonctionne également dans le navigateur, vous devez implémenter votre validation personnalisée en JavaScript et définir la méthode dans la propriété ClientValidationFunction du contrôle. Ensuite, les erreurs côté client apparaissent dans le récapitulatif de validation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top