[ASP MVC] ValidationAttribute côté client
Bonjour tout le monde,
Je suis un grand débutant en Asp.Net MVC. Voici le contexte :
Citation:
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:
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:
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