Comment combiner RegularExpressionValidator de contrôle et de RequiredFieldValidator?
J'ai souvent utiliser des regex expression validateurs qui sont aussi un champ obligatoire. Ce qui conduit à ce qui semble être des commandes redondantes sur la page. Il n'est pas "Obligatoire", propriété de la regex validateur qui signifie que j'ai besoin d'un autre contrôle. Comme ceci:
<asp:TextBox ID="tbCreditCardNumber" runat="server" Width="200"></asp:TextBox>
<asp:RegularExpressionValidator ID="revCreditCardNumber" runat="server"
ControlToValidate="tbCreditCardNumber" ValidationGroup="CheckoutGroup" ErrorMessage="Invalid Credit Card Number!"
ValidationExpression="^(3[47][0-9]{13}|5[1-5][0-9]{14}|4[0-9]{12}(?:[0-9]{3})?)$">*</asp:RegularExpressionValidator>
<asp:RequiredFieldValidator ID="rfvCreditCardNumber" runat='server' ControlToValidate="tbCreditCardNumber" ValidationGroup="CheckoutGroup"
ErrorMessage="Credit Card Number Required">*</asp:RequiredFieldValidator>
Est-il un moyen de combiner les deux commandes donc je n'ai pas de type de tellement de code?
Aucune raison pourquoi vous ne l'utilisez pas un validateur personnalisé?
Pourquoi ne pas vérifier les espaces vides dans votre regex? Pas besoin d'un champ obligatoire programme de validation de cette façon.
Pourquoi ne pas vérifier les espaces vides dans votre regex? Pas besoin d'un champ obligatoire programme de validation de cette façon.
OriginalL'auteur Dan Bailiff | 2009-06-16
Vous devez vous connecter pour publier un commentaire.
Vous pouvez rouler vos propres CustomValidator, combinant la fonctionnalité. Autre que cela, non, pas à ma connaissance.
OriginalL'auteur Ian Jacobs
Un problème commun est que le validateur composant prend encore de l'espace lorsqu'il n'est pas montré, ce qui semble étrange si vous en avez plusieurs et c'est à dire le dernier est déclenché en laissant une plus grande lacune de l'astérisque ou d'un autre type de marqueur. Ce problème peut être facilement résolu en ajoutant:
...pour le validateur.
Mais cela ne résout pas le problème de plusieurs trigging en même temps qui n'aura encore beaucoup de programme de validation des erreurs dans une rangée. Un validateur personnalisé serait alors probablement la meilleure solution.
OriginalL'auteur Johncl
Vous pouvez remplacer EvaluateIsValid méthode
Je suppose que, CustomValidator est une meilleure idée, cependant, vous pourriez faire le même truc;), remplacer la méthode d'évaluation sur le côté client protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); Page.ClientScript.RegisterStartupScript(GetType(), "customVal", ClientID + @".evaluationfunction = function(val) { var valeur = ValidatorGetValue(val.controltovalidate); if (ValidatorTrim(valeur).longueur == 0) return false; return RegularExpressionValidatorEvaluateisvalid(val); }", true); }
OriginalL'auteur Gagarin
Pour être plus précis, vous devez définir la ValidateEmptyMessage propriété de la CustomValdiator à true, sinon il ne sera pas valider emprty champs de saisie. Exemple:
Mais, comme vous pouvez le voir ce n'est en aucune façon plus courte que votre ancien code, donc si c'est à moi, il y a pas de point en utilisant validateur personnalisé dans ce cas-là. Comme pour la question d'origine, il n'y a malheureusement aucun moyen de rendre la valeur par défaut RegExpressValidator valider vide les champs de saisie.
OriginalL'auteur Genady Sergeev