Meilleure pratique de validation pour Model et ViewModel

Je n'ai séparé modèle et classes viewmodel. Où les classes viewmodel seulement niveau de l'INTERFACE utilisateur de validation (voir: Validation: Modèle ou ViewModel).

Je peux vérifier sur le post de l'action dans un contrôleur de modèle (vewmodel) est valide.

Le demander:
Comment puis-je valider le modèle (la principale entité d'annotation de données).

Je ne suis pas le développement de ce dernier à l'aide du modèle objet. Un peu double emploi avec les propriétés et l'ajout de toutes les propriétés, éventuellement requis dans ce point de vue particulier.

//Model Class
public class User
{
    [Required]
    public string Email {get; set;}

    [Required]
    public DateTime Created {get; set;}
}

//ViewModel Class
public class UserViewModel
{
    [Required]
    public string Email {get; set;}

    [Required]
    public string LivesIn {get; set;}
}

//Post action
public ActionResult(UserViewModel uvm)
{
    if( ModelState.IsValid)
        //means user entered data correctly and is validated

    User u = new User() {Email = uvm.Email, Created = DateTime.Now};
    //How do I validate "u"?

    return View();
}

Doit faire quelque chose comme ceci:

var results = new List<ValidationResult>();
var context = new ValidationContext(u, null, null);
var r = Validator.TryValidateObject(u, context, results);

Ce que je pense est l'ajout de cette technique de validation dans la classe de base (de l'entité d'affaires), et de vérifier quand je suis à la cartographie de l'viewmodel de la classe d'entité commerciale.

Des suggestions?

source d'informationauteur Yahya