Bonjour tout le monde,

Je suis un grand d�butant en Asp.Net MVC. Voici le contexte :

J'ai un formulaire pour permettre � un nouvel utilisateur de s'enregistrer. Dans ce formulaire, j'ai un champs Login et un champs Email, qui doivent �tre uniques. Afin de pouvoir tester cela, j'ai cod� une classe h�rit�e de ValidationAttribute, et si la contrainte de validation fonctionne bien c�t� serveur (� la validation du formulaire), rien ne se passe c�t� client (la validation n'est pas active lorsque je saisis un email existant et que je clique sur un autre champs) !
Voici mon code :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
public class UsersModel
    {
        [Required(ErrorMessage="Une adresse email valide est requise")]
        [RegularExpression("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?",ErrorMessage="L'email saisi ne respecte pas le format requis")]
        [SingleUser("Email", ErrorMessage="Un compte existe d�j� avec cet email. Merci d'en saisir un nouveau")]
        public string Email { get; set; }
    }
et

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 
    public class SingleUser : ValidationAttribute
    {
        private string Field{get;set;}
        public SingleUser(string field)
        {
            Field = field;
        }
 
        public override bool IsValid(object value)
        {
            string procedureToExecute = String.Empty;
            if (string.IsNullOrEmpty((string)value))
            {
                return false;
            }
            if (Field != "Email" && Field != "Login")
            {
                return false;
            }
            switch (Field)
            {
                case "Email":
                    procedureToExecute = "dbo.BA_Users_GetUserByEmail";
                    break;
                case "Login":
                    procedureToExecute = "dbo.BA_Users_GetUserByLogin";
                    break;
            }
 
            using (SqlConnection sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["BankAccount"].ConnectionString))
            {
 
                sqlConnection.Open();
 
                SqlCommand createUser = new SqlCommand(procedureToExecute, sqlConnection);
                createUser.CommandType = CommandType.StoredProcedure;
                createUser.Parameters.AddWithValue("@Value", value.ToString());
                int result = (int)createUser.ExecuteScalar();
                if (result >= 1)
                {
                    return false;
                }
                return true;
            }
        }
    }
Quelqu'un saurait-il m'aiguiller vers un tutoriel traitant des ValidationAttribute c�t� client ? Car malgr� mes recherches, je ne suis tomb� que sur des r�ponses de forums (dont le plus pertinent selon moi ci-dessous) que je n'arrive pas � appliquer dans mon cas (certainement du � mon niveau).
http://forums.asp.net/p/1559594/3873161.aspx

Je n'ai pas souhait� encombrer mon poste avec le code de la vue ou du controller, les validations required et regularexpression fonctionnant parfaitement c�t� client.

Comme je l'ai dit, je suis d�butant, donc si quelque chose dans mon code sans rapport avec les validationAttribute vous donne envie de vomir, je suis friand de toute suggestion d'am�lioration.


En vous remerciant par avance pour votre r�ponse.

Cordialement