ValidateModel problème avec DataAnnotations
-
24-10-2019 - |
Question
J'ai un SearchViewModel avec ces propriétés:
[RegularExpression("name")]
public String SortField;
[RegularExpression("asc|desc")]
public String SortDirection;
Comme vous pouvez le voir, je veux « nom » d'être la seule valeur valide de SortField à ce moment, et « asc » ou « desc » les valeurs uniquement valable pour les SortDirection.
Cependant, ValidateModel ne capture aucune erreur lorsque les valeurs sont différentes, et ModelState.IsValid retourne vrai. Fondamentalement, je peux fournir une valeur et il sera toujours passer.
Le procédé de commande en abrégé:
public ActionResult List(SearchViewModel model)
{
ValidateModel(model); // No error here
Boolean isValid = ModelState.IsValid // This is true
//...
}
Qu'est-ce que je fais mal?
Edit:. Je ne sais pas si cela est important, mais je suis sur un ModelBinder personnalisé
La solution
Ce ne sont pas des propriétés; ils sont champs . Reliure et validation uniquement travail contre les propriétés.
FYI - [RegularExpression]
permet également à l'utilisateur de spécifier aucune valeur pour l'entrée (qui est converti en une valeur nulle). Si vous voulez interdire les valeurs NULL, utilisez [Required]
en plus [RegularExpression]
.