2010-07-02 9 views
47

Y a-t-il un moyen pour moi de définir manuellement le ModelState.isValid = False à partir du contrôleur?Définir manuellement ModelState.isValid à partir 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 est rien, alors je ne suis pas d'erreurs de validation de tir. Je pensais à implémenter un validateur personnalisé, mais cela nécessiterait de cliquer deux fois sur la base de données (une fois pour la validation et une fois pour définir la valeur).

Répondre

80

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 de modèles. Cependant, vous pouvez ajouter vos propres erreurs de modèle, par exemple:

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

ModelState.IsValid retournerez alors faux.

+0

en utilisant cette approche, je reçois toujours la valeur par défaut pour le message ... –

Questions connexes