71 votes

Définir manuellement ModelState.isValid à partir du contrôleur

Existe-t-il un moyen de régler manuellement le paramètre ModelState.isValid = False du contrôleur ?

J'ai un code comme celui-ci

    Dim _region As Domain.Region = RegionService.GetRegionByNameAndParentID(user.UserRegion, user.ParentRegionID)
    If ModelState.IsValid AndAlso Not _region Is Nothing Then
           ''# ...
    Else
           Return View(user)
    End If

Mais si _region n'est rien, je n'obtiens aucune erreur de validation.

J'ai pensé à mettre en place un validateur personnalisé, mais cela nécessiterait d'interroger la base de données deux fois (une fois pour la validation et une fois pour définir la valeur).

125voto

richeym Points 2108

Vous ne pouvez pas définir ModelState.IsValid directement, car il s'agit d'une propriété dérivée qui vérifie simplement la collection d'erreurs des modèles. Vous pouvez cependant ajouter vos propres erreurs de modèle, par exemple

ModelState.AddModelError("Region", "Region is mandatory");

ModelState.IsValid renverra alors un message faux.

3voto

tomthetomcat Points 11

Il est vrai que vous ne pouvez pas définir l'état du modèle directement, mais il est parfois utile de l'effacer, ce qui est tout à fait possible :

  ModelState.Clear();

Réinitialise le ModelState.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X