L'idée est de mettre en avant un champ dont la valeur n'est pas correcte sans toutefois que ce soit "lourd". L'étoile à coté n'est pas assez visible. Le message en rouge, trop lourd.

Deuxièmement, même s'il faut du code coté serveur pour faire le même boulot, on veut du JavaScript pour alléger le nombre d'aller-retours.

Nous faisons donc un contrôle dont la bordure devient rouge lors de la validation. On utilise un CustomValidator.

Voici la partie html :

<asp:TextBox ID="CAPACITETextBox" CssClass="form" runat="server" Text=' ' />
<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="CustomValidator" ControlToValidate="CAPACITETextBox" ClientValidationFunction="NumValidation" Display="None"></asp:CustomValidator>

Et voici la fonction JavaScript. Pour l'exemple, elle vérifie si la valeur est un entier

        // Validation si c'est un numérique.
        function NumValidation(sender, args) {

            // Récupère le contrôle à valider
            var obj = document.getElementById(sender.controltovalidate); 

            // Vérification si c'est un Int
            if (!isNaN(args.Value) && Math.abs(args.Value) == args.Value && args.Value >= 0) 
            {
                // Oui, alors on enlève l'éventuelle couleur de la bordure
                obj.style.borderColor = "";
                args.IsValid = true;
                return;
            }
            
            // Erreur, on ajoute donc la couleur rouge en bordure
            obj.style.borderColor = "red";
            
            args.IsValid = false;
            return;

        }