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é

Était-ce utile?

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].

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top