Annotations de données pour la validation, au moins un champ obligatoire?
Si j'ai un objet de recherche avec une liste de champs, puis-je, en utilisant le Système.ComponentModel.DataAnnotations espace de noms, de le configurer afin de valider qu'au moins l'un des champs de la recherche n'est pas null ou vide? j'.e Tous les champs sont facultatifs, mais au moins on devrait toujours être entré.
Vous devez vous connecter pour publier un commentaire.
J'avais créer un validateur personnalisé pour cela - il ne vous donnera pas la validation côté client, juste à côté serveur.
Noter que pour que cela fonctionne, vous aurez besoin de l'aide de
nullable
types, comme des types de valeur par défaut est0
oufalse
:D'abord créer un nouveau validateur:
Vous pouvez ensuite décorer vos modèles avec ceci:
Puis quand vous appelez
ModelState.IsValid
votre programme de validation sera appelée, et votre message sera ajouté à la ValidationSummary sur votre point de vue.Notez que vous pouvez étendre à vérifier le type de bien revenir, ou de rechercher les attributs à inclure/exclure de la validation si vous voulez - c'est en supposant un générique validateur qui ne sait rien sur le type c'est de la validation.
J'ai étendu Zhaph réponse à prendre en charge le regroupement de propriétés.
Utilisation:
Et si vous voulez avoir 2 groupes (ou plus):
Cette question est assez vieux, mais comme de .NET 3.5 (je crois), Ivalidatableobjet peut aider avec délicate de validation des situations. Vous pouvez mettre en œuvre afin de valider arbitraire des règles d'affaires. Dans ce cas, quelque chose comme:
Si vous voulez faire un complexe de validation à l'encontre de tout .Net de la classe, sans litering avec des annotations, regardez FluentValidation, ou pour .Net 2.0, FluentValidation pour la 2.0