2010-06-20 5 views
0

J'ai utilisé la validation IDataErrorInfo pour mon modèle. Mais lorsque j'utilise ces classes de modèle dans un modèle de vue, la validation ne se produit pas.asp.net mvc Validation IDataErrorInfo lors de l'utilisation de ViewModel

exemple viewmodel ci-dessous

public class CategoryViewModel  
{ 
    // Category class with IDataErrorInfo 
    public Category category { set; get; } 

    // Subcategory class with IDataErrorInfo 
    public IList<SubCategory> subcategory { set; get; } 
} 

Maintenant, si la catégorie ou les classes Sous-catégorie sont directement utilisés comme modèles pour vue, la validation fonctionne très bien. Mais, si CategoryViewModel est utilisé, aucune validation ne se produit.

+0

@Darin Dimitrov: bien, s'il ne fonctionne pas avec les propriétés enfants, IDataErrorInfo semble plutôt inutile, sauf pour les formulaires très simples. Je ne peux pas sembler obtenir un article qui traite des meilleures pratiques pour la validation, quelque chose qui compare IDataErrorInfo et DataAnnotations. 1. Pensez-vous qu'il est préférable d'utiliser DataAnnotaions puisque la plupart de mes formulaires utilisent ViewModels comme celui ci-dessus? 2. ne serait-il pas une mauvaise pratique d'utiliser des données de séparation par rapport aux préoccupations, puisque je vais faire beaucoup de validations dans le contrôleur, plutôt cette vue ou ce modèle? – maX

+0

Je pense que DataAnnotations sont meilleurs. Vous ne devriez faire aucune validation dans le contrôleur. Avec DataAnnotations, vous n'utilisez que des attributs sur vos modèles de vue. Pour des scénarios de validation plus avancés, utilisez FluentValidation comme je l'ai suggéré dans ma réponse. –

Répondre