5

Vorrei convalidare la casella di testo per un testo specifico e non deve essere vuota. Ma il validatore di espressioni regolari non convalida se la casella di testo è BLANK. Tuttavia, convalida se digito qualcosa nella casella di testo.Il validatore di espressioni regolari non convalida la casella di testo vuota

Come è possibile eseguire l'espressione regolare anche se la casella di testo è vuota?

Devo utilizzare contemporaneamente Validatore richiesto + Validatore Regex? Grazie.

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

risposta

3

Generalmente farei come suggerisci tu e hai anche un validatore richiesto. Questo ti permetterebbe di avere un messaggio diverso per ogni regola.

Un'altra opzione che consiglierei a qualsiasi sviluppatore di siti Web è il plug-in di convalida JQuery. Se lo si combina con Fluent Validation, è possibile mantenere tutte le regole di convalida per i propri oggetti di business in un unico posto e convalidare sul lato client e sul server utilizzando le stesse regole.

JQuery Validation

Fluent Validation

3

È necessario utilizzare entrambi allo stesso tempo. Non viene restituito un errore di convalida se il valore è vuoto è comune con i controlli di convalida ASP.NET. Vedrai lo stesso comportamento dagli attributi di convalida nello spazio dei nomi System.ComponentModel.DataAnnotations.

+0

+1. È possibile aggirare questo con un CustomAnnotationValidator personalizzato. Ne ho scritto uno, ma richiede l'ereditarietà da un oggetto di base. È molto utile: http://bit.ly/bcwher Ti consente di aggiungere qualsiasi numero di ValidationAttributes alle proprietà e visualizza il primo messaggio di errore che causa il fallimento della convalida (come più validatori asp aspetterebbero) –

4

Si dovrebbe combinare il tuo RegularExpressionValidator con un RequiredFieldValidator.

Se uno dei due errori si bloccherà a causa dell'avvio della convalida. Ognuno ha uno scopo e lo scopo dello RegularExpressionValidator è quello di convalidare il testo inserito e non la mancanza di testo.

Se si desidera eseguire tutto in un unico validatore, è possibile utilizzare CustomValidator e impostare ValidateEmptyText='true'. Quindi è possibile utilizzare la regex javascript per eseguire il controllo. Vorrei raccomandare i due validatori anche se questo è un approccio standard.

Problemi correlati