Comment valider uniquement une partie du modèle dans ASP .NET MVC?

J'ai un grand modèle (en gros je veux dire de la classe du modèle contient beaucoup de champs/propriétés et chacun a au moins une validation de l'attribut (comme RequiredMaxLengthMinLength etc)). Au lieu de créer une vue avec beaucoup d'entrées pour un utilisateur de remplir le modèle avec les données que je veux créer plusieurs points de vue où l'utilisateur va remplir une partie du modèle de champs et de passer à l'étape suivante (une sorte de "assistant"). Tout en réorientant entre les étapes que j'ai pas de magasin acquitta modèle objet dans Session. Quelque chose comme ci-dessous:

Modèle:

public class ModelClass
{
    [MaxLength(100)] ...
    public string Prop1{get;set;}
    [MaxLength(100)] ...
    public string Prop2{get;set;}
    ...
    [Required][MaxLength(100)] ...
    public string Prop20{get;set;}
}

Contrôleur:

[HttpPost]
public ActionResult Step1(ModelClass postedModel)
{    
    //user posts only for example Prop1 and Prop2
    //so while submit I have completly emty model object
    //but with filled Prop1 and Prop2
    //I pass those two values to Session["model"]
    var originalModel = Session["model"] as ModelClass ?? new ModelClass();
    originalModel.Prop1 = postedModel.Prop1;
    originalModel.Prop2 = postedModel.Prop2;
    Session["model"] = originalModel;

    //and return next step view
    return View("Step2");
}

[HttpPost]
public ActionResult Step2(ModelClass postedModel)
{
    //Analogically the same
    //I have posted only Prop3 and Prop4

    var originalModel = Session["model"] as ModelClass;
    if (originalModel!=null)
    {
        originalModel.Prop3 = postedModel.Prop3;
        originalModel.Prop4 = postedModel.Prop4;
        Session["model"] = originalModel;

        //return next step view
        return View("Step3");
    }
    return View("SomeErrorViewIfSessionBrokesSomeHow")
}

Step1 vue dispose d'entrées seulement pour Prop1 et Prop2Step2 vue contient des entrées pour Prop3 et Prop4 etc.

MAIS VOICI LA CHOSE

Lorsque l'utilisateur est sur, par exemple, à l'étape 1, et remplit Prop1 avec une valeur de plus de 100 caractères longueur de la validation côté client fonctionne très bien. Mais, bien sûr , j'ai pour valider cette valeur et sur le côté serveur en contrôleur. Si j'avais plein de modèle que je venais de faire ce qui suit:

if(!ModelState.IsValid) return View("the same view with the same model object");

de sorte que l'utilisateur doit remplir le formulaire à nouveau et de les corriger.
MAIS sur l'étape 1, l'utilisateur a rempli seulement 2 propriétés de 20, et j'ai besoin de les valider. Je ne peux pas utiliser ModelState.IsValid parce que le modèle de l'état ne sera pas valide. Comme Vous pouvez le voir Prop20 est marqué avec [Required] attribut, lorsque l'utilisateur soumet Prop1 et Prop2Prop20 est nul et c'est pourquoi ModelState est pas valide. Bien sûr, je pourrait permettre à l'utilisateur d'aller à l'étape 2, de remplir toutes les étapes et de valider le modèle de l'état que sur la dernière étape, mais je ne veux pas permettre à l'utilisateur de passer à l'étape 2 si il a rempli l'étape 1 incorrect. Et je veux cette validation dans le contrôleur. La question est donc:
Comment puis-je valider une partie seulement du modèle? Comment puis-je vérifier que seules certaines des propriétés du modèle correspondent à leurs attributs de validation?

source d'informationauteur Dmytro