5

Je souhaite valider la zone de texte pour un texte spécifique et elle ne doit pas être vide. Mais le validateur d'expression régulière ne valide pas si la zone de texte est BLANK. Cependant, il valide si je tape quelque chose dans la zone de texte.Le validateur d'expressions régulières ne valide pas la zone de texte vide

Comment faire une expression régulière à déclencher même si la zone de texte est vide?

Dois-je utiliser le validateur requis + validateur Regex en même temps? Merci.

<asp:TextBox ID="txtcard" runat="server" MaxLength="16"></asp:TextBox> 

<asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server" 
ControlToValidate="txtcard" ErrorMessage="Please type credit card no" 
ValidationExpression="^\d{16}$"></asp:RegularExpressionValidator> 

Répondre

3

Je ferais généralement comme vous le suggérez et auriez aussi un validateur requis. Cela vous permettrait d'avoir un message différent pour chaque règle.

Une autre option que je recommanderais à n'importe quel développeur web est le plugin de validation JQuery. Si vous combinez cela avec Fluent Validation, vous pouvez conserver toutes vos règles de validation pour vos objets métier au même endroit et vous pouvez les valider du côté client et du serveur en utilisant ces mêmes règles.

JQuery Validation

Fluent Validation

3

Vous devez utiliser les deux en même temps. Ne pas renvoyer une erreur de validation si la valeur est vide est commun avec les contrôles de validation ASP.NET. Vous verrez le même comportement à partir des attributs Validation dans l'espace de noms System.ComponentModel.DataAnnotations.

+0

+1. Vous pouvez contourner cela avec un DataAnnotationValidator personnalisé. J'en ai écrit un, mais il faut hériter d'un objet de base. C'est très utile: http://bit.ly/bcwher Il vous permet d'ajouter n'importe quel nombre de ValidationAttributes aux propriétés et affiche le premier message d'erreur qui provoque l'échec de la validation (comme le ferait plusieurs validateurs d'asp) –

4

Vous devez combiner votre RegularExpressionValidator avec un RequiredFieldValidator.

Si l'une des deux échoue, elle se bloque en raison d'un tir de validation. Chacun a un but et le but de RegularExpressionValidator est de valider le texte saisi et non le manque de texte.

Si vous voulez faire tout cela dans un seul validateur, vous pouvez utiliser le CustomValidator et régler ValidateEmptyText='true'. Ensuite, vous pouvez utiliser le regex javascript pour faire la vérification. Je recommanderais les deux validateurs cependant car c'est une approche standard.

Questions connexes