2010-12-03 17 views
3

J'ai un viewmodel qui ressemble à ceci:Comment puis-je valider à l'aide de DataAnnotations seulement une partie des champs dans Viewmodel?

public class Viewmodel 
{ 

    public int Type {get;set} // 0 if typeA, 1 if typeB 

    [Required] 
    public string AProperty1 {get;set} 

    [Required] 
    public string AProperty1 {get;set} 

    ... 

    [Required] 
    public string BProperty1 {get;set} 

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

Il y a 2 formes qui obtiennent ce viewmodel et dans les entrées utilisateur FormA AProperty1, etc. AProperty2 et retour BProperty-s comme nul. La même chose avec FormB. Le type de formulaire (FormA ou FormB) est affecté au champ ViewModel.type. Donc, le problème est que dans mon contrôleur, je vérifie la propriété ModelState.IsValid et il sera faux dans les deux sens, car la moitié des champs sont toujours NULL.

Une solution possible pourrait être de remplacer en quelque sorte la propriété ModelState.IsValid dans mon ModelView afin que je puisse lui passer le type. Mais pour autant que je sache, il n'y a aucun moyen de le faire.

Y a-t-il d'autres solutions? (il devrait de préférence pouvoir être utilisé avec la validation côté client)

+0

OMI Le problème ici est que vous avez un « ViewModel » qui ne correspond pas à votre modèle réel de la vue. Vous devriez le diviser. – onof

+0

Je sais que c'est une mauvaise façon et la principale source de problèmes ici, mais c'est une exigence. – GaGar1n

Répondre