ASP.NET de Base - modèle Personnalisé de validation
MVC lorsque l'on poste un modèle à une action que nous ne la suivante afin de valider le modèle par rapport à l'annotation de données de ce modèle:
if (ModelState.IsValid)
Si nous marque comme une propriété [Obligatoire], le ModelState.IsValid permettra de valider cette propriété si contient une valeur ou non.
Ma question: Comment puis-je créer manuellement et exécuter validateur personnalisé?
P. S. je suis en train de parler backend validateur.
OriginalL'auteur user2818430 | 2017-10-11
Vous devez vous connecter pour publier un commentaire.
.NET de Base, il vous suffit de créer une classe qui hérite de
ValidationAttribute
. Vous pouvez voir tous les détails dans la ASP.NET Core, MVC Docs.Voici l'exemple pris directement à partir de la documentation:
J'ai adapté l'exemple d'exclure la validation côté client, comme demandé dans votre question.
Pour utiliser ce nouvel attribut (encore une fois, pris de la documentation), vous devez l'ajouter dans le champ:
Ici, un autre exemple plus simple pour s'assurer qu'une valeur est
true
:C'est appliqué de la même façon:
OriginalL'auteur Kirk Larkin
Pour créer un attribut validation dans
.Net Core
, vous avez besoin d'hériter deIModelValidator
et de mettre en œuvreValidate
méthode.Validateur personnalisé
Le modèle
Oui! Le
ModalState
objet de refléter correctement les erreurs.Je ne sais pas si ça pourrait être appliquée sur le niveau de la classe. Je sais que vous pouvez obtenir de l'information sur la classe de
ModalValidationContext
:context.Modal
: retourne la valeur de la propriété qui doit être validécontext.Container
: renvoie l'objet qui contient la propriétécontext.ActionContext
: fournit des données de contexte et décrit la méthode d'action qui traite la demandecontext.ModelMetadata
: décrit le modèle de la classe qui est en cours de validation dans le détailNotes:
Cette validation de l'attribut ne fonctionne pas avec la Validation du Client, tel que demandé dans l'OP.
Cette approche s'applique à la classe du modèle? Ou il peut être utilisé avec le modèle des propriétés de la classe?
veuillez voir mes mises à jour.
OriginalL'auteur David Liang
J'ai utilisé la même solution pour vérifier NULL, mais il ne fonctionne pas pour moi.
OriginalL'auteur Muni Chittem