Je sais que ce n'est pas exactement la réponse que vous cherchez, mais je regarde toujours si je peux mettre de telles validations dans un CustomValidator avec une méthode OnValidate côté serveur. Les regex sont amusants, et parfaits pour les puzzlers mais il y a toujours des gens qui ne les comprennent pas et ne comprennent pas ce que vous faites.
Toujours essayer de se tromper du point de vue de la lisibilité et de la facilité de compréhension, surtout si vous prévoyez que vous ne serez pas celui qui maintient la solution.
Bien que cela puisse sembler trop verbeux, je trouve que c'est le genre de solution qui présente le moins de chagrin à long terme.
J'utiliser un CustomValidator comme celui-ci dans la page ASP:
<asp:CustomValidator ID="rev1" runat="server"
ValidateEmptyText="true"
ControlToValidate="TextBox1"
SetFocusOnError="True"
Display="Dynamic"
OnServerValidate="validatePasswordField"
ErrorMessage="Password must be 6 characters long"/>
Et dans le code-behind je mettrais quelque chose comme ceci:
private const int EMPTY_PASSWORD_LENGTH = 0;
private const int MIN_PASSWORD_LENGTH = 6;
private const int MAX_PASSWORD_LENGTH = 6;
protected void validatePasswordField(object source,
ServerValidateEventArgs args) {
if (source == null) return;
string candidatePassword = TextBox1.Text;
args.IsValid = isValidPasswordText(candidatePassword);
}
private bool isValidPasswordText(string candidate) {
return candidate.Length == EMPTY_PASSWORD_LENGTH
|| (candidate.Length >= MIN_PASSWORD_LENGTH
&& candidate.Length <= MAX_PASSWORD_LENGTH);
}
Eh bien, en fait je voudrais Tirez la définition isValidPasswordText (string) dans une classe de couche de gestion, mais c'est plus une décision d'architecture.
À quoi sert-il? Quelqu'un a posé une question très similaire hier, mais pas asp.net spécifique. –
J'ai une grille de vue des utilisateurs, une colonne est un mot de passe "mot de passe", donnant à l'administrateur l'option d'entrer un mot de passe. – madcolor