0

J'ai un SearchViewModel avec ces propriétés:ValidateModel problème avec DataAnnotations

[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 seules valeurs valides pour SortDirection.

Cependant, ValidateModel ne capture aucune erreur lorsque les valeurs sont différentes, et ModelState.IsValid retourne vrai. Fondamentalement, je peux fournir n'importe quelle valeur et cela passera toujours par.

La méthode du contrôleur 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?

Editer: Je ne suis pas sûr que ce soit important, mais j'utilise un ModelBinder personnalisé.

Répondre

3

Ce ne sont pas des propriétés; ils sont champs. Liaison et validation seulement 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].

+0

Got, je vous remercie. – Alex