2009-10-08 8 views
1

Je comprends l'annotation des propriétés de classe avec la longueur de base requise et la longueur minimale et l'obtention de tous les avantages du côté serveur asp.net mvc et de la validation côté client.Combinaison de DataAnnotations Validation avec des règles métier complexes

Cependant, quelqu'un at-il un lien qui montre comment vous combinez cette validation «de base» avec des règles métier plus complexes. Comment exécuter des fonctions de règles métier, par exemple, le client a-t-il commandé quoi que ce soit au cours de la dernière année (accès à la base de données requis) et utilise-t-il toujours la même plomberie DataAnnotation et validation mvc?

Objectif: Ne pas vouloir deux façons de générer et de sortir des méthodes de validation.

Répondre

4

De http://msdn.microsoft.com/en-us/library/dd901590%28VS.95%29.aspx:

Pour créer des contrôles de validation personnalisés, vous pouvez créer une classe qui dérive de la classe ValidationAttribute ou créer une méthode qui effectue la vérification de validation et de référence cette méthode lors de l'application du CustomValidationAttribute au membre de données. Lorsque vous créez une classe dérivée de ValidationAttribute, remplacez la méthode IsValid pour fournir la logique de votre vérification de validation personnalisée.

Il semble par exemple il code.

3

Données Annotation exécutée avant que votre action soit appelée. Ensuite, peu importe si la validation a réussi ou non, l'action est toujours appelée. Si le DA a détecté des données non valides, votre ModelState sera invalide.

Une fois ici, vous pouvez toujours effectuer la validation souhaitée pour vos règles métier, comme vous le feriez normalement sans l'annotation de données, si vous le souhaitez. Dans votre action, vous pouvez ajouter des erreurs au ModelState même si la validation de l'annotation de données a réussi. Dans ce cas, vous ajoutez vos erreurs avec ModelState.addError et ces erreurs sont ajoutées à toute erreur fournie par le DA. Donc, dans votre vue, peu importe d'où vient l'erreur. Ou, si vos règles sont générales, vous pouvez écrire vos propres étiquettes d'annotation. La chose Annotation des données est distribuée avec sa source, de sorte que vous avez un contrôle total sur elle.

1

Vous pouvez utiliser VAB (Application Validation Block) à partir de l'Enterprise Library 5 de Microsoft qui repose réellement sur la classe DataAnnotations mais vous pouvez très facilement faire votre logique bussiness complexe par la configuration ... Je vous suggère de vérifier ...

Questions connexes