4 votes

Validation d'une PARTIE du modèle avec ASP.NET MVC & Data Annotations

Nous avons configuré nos classes POCO en utilisant des annotations de données.

Pour l'une de ces classes, nous avons plus d'une vue pour que l'utilisateur puisse remplir toutes ses données. Par exemple, s'il s'agissait d'une classe avec le nom d'utilisateur et le mot de passe en tant que propriétés, nous demanderions à l'utilisateur de spécifier son nom d'utilisateur sur la première page et son mot de passe sur la deuxième page.

Maintenant, si j'utilise la classe POCO complète (qui nécessite que le nom d'utilisateur et le mot de passe soient fournis), alors lorsque nous demandons si ModelState.IsValid est vrai, nous obtenons faux car le mot de passe n'a pas encore été fourni, mais nous savons que le mot de passe sera fourni à la page suivante!

Existe-t-il un moyen générique de valider ces éléments du modèle pour lesquels des valeurs auraient dû être fournies plutôt que le modèle entier? Je sais que je peux supprimer les erreurs pour des éléments individuels du ModelState.

Je sais que nous pourrions séparer les éléments du modèle pour avoir des modèles séparés pour chaque partie de la page de l'entrée qui est effectuée, mais cela semble être une modification de la classe sous-jacente pour correspondre davantage à la vue.

Cordialement

Jamie

4voto

jamie Points 636

Je crois que l'approche ici par Steve traite de cela

http://blog.stevensanderson.com/2010/02/19/partial-validation-in-aspnet-mvc-2/

en essence, il filtre les clés pour lesquelles il n'y a pas de valeurs entrantes.

0voto

Steven Points 56939

Essayez de placer la validation sur les classes ViewModel. Chaque vue aura sa propre classe ViewModel. Une avec le nom d'utilisateur, l'autre avec le mot de passe. N'utilisez pas le modèle tant que vous n'avez pas rassemblé toutes les données dont vous avez besoin.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X