5

Ich möchte das Textfeld für bestimmten Text validieren und es darf nicht leer sein. Der Validierer für den regulären Ausdruck überprüft jedoch nicht, ob das Textfeld BLANK ist. Es wird jedoch überprüft, wenn ich etwas in das Textfeld eintippe.Regulärer Ausdruck Validator validiert kein leeres Textfeld

Wie kann ich einen regulären Ausdruck auslösen, auch wenn das Textfeld leer ist?

Sollte ich Required Validator + Regex Validator gleichzeitig verwenden? Vielen Dank.

<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> 

Antwort

3

Ich würde im Allgemeinen tun, wie Sie vorschlagen und einen erforderlichen Validator auch haben. Dadurch können Sie für jede Regel eine andere Nachricht erstellen.

Eine weitere Option, die ich jedem Webentwickler empfehlen würde, ist das JQuery-Validierungs-Plugin. Wenn Sie dies mit Fluent Validation kombinieren, können Sie alle Validierungsregeln für Ihre Geschäftsobjekte an einer Stelle beibehalten und auf der Clientseite und auf dem Server mit denselben Regeln validieren.

JQuery Validation

Fluent Validation

3

Sie sollten beide zur gleichen Zeit verwenden. Das Zurückgeben eines Validierungsfehlers, wenn der Wert leer ist, ist mit den ASP.NET-Überprüfungssteuerelementen üblich. Sie werden dasselbe Verhalten von den Validierungsattributen im Namespace System.ComponentModel.DataAnnotations sehen.

+0

+1. Sie können dies mit einem benutzerdefinierten DataAnnotationValidator umgehen. Ich habe einen geschrieben, aber es muss von einem Basisobjekt geerbt werden. Es ist sehr nützlich: http://bit.ly/bcwher Es erlaubt Ihnen, eine beliebige Anzahl von ValidationAttributes zu Eigenschaften hinzuzufügen und zeigt die erste Fehlermeldung an, die die Validierung fehlschlägt (wie mehrere ASP-Validatoren) –

4

Sie sollten Ihre RegularExpressionValidator mit einem RequiredFieldValidator kombinieren.

Wenn einer der beiden Fehler auftritt, wird er aufgrund von Validierungszündungen blockiert. Jeder dient einem Zweck und der Zweck der RegularExpressionValidator ist es, eingegebenen Text nicht den Mangel an Text zu validieren.

Wenn Sie alles in einem Validator machen möchten, können Sie CustomValidator verwenden und ValidateEmptyText='true' einstellen. Dann könnten Sie die Javascript-Regex verwenden, um die Überprüfung durchzuführen. Ich würde jedoch die beiden Validatoren empfehlen, da dies ein Standardansatz ist.