La revalidation une modification de la ViewModel dans une méthode de contrôleur?
MODIFIER - Nous sommes à l'aide de MVC4 Dev Preview....
Je me suis mise en œuvre d'une page d'édition d'un FishingTrip
classe. FishingTrip
contient une enfant de la collection de simple Crew
objets (c'est à dire FishingTripID, CrewID, CrewPosition).
Je suis en utilisant Jarrett Meyer approche pour ajouter, modifier et supprimer à partir de la Crew
collection.
Je suis l'aide discrète de la validation de préciser que les propriétés de Crew
sont tous Required
.
Mon problème: lorsque je me suis logiquement-supprimer un élément de la liste (comme par Jarrett de la méthode), je ne veux pas que l'article soit validé.
Je l'ai modifié le "removeRow" la méthode sur le côté client pour désactiver discrète de la validation de la logique de l'élément supprimé, de sorte que le formulaire de post malgré l'existence d'un élément qui contient les champs vides.
Dans ma méthode de contrôleur [HttpPost] Edit
, ModelState.IsValid
commence comme faux (comme prévu - en raison de la logique de l'élément supprimé qui contient les champs vides.) J'ai donc supprimer cet élément de mon ViewModel.... mais ModelState.IsValid
est encore faux.
En résumé, j'ai (je pense) souhaite modifier mon ViewModel dans le contrôleur méthode pour supprimer l'élément fautif, puis d'appeler une sorte de "revalider", et ont ModelState.IsValid
apparaître comme vrai.
Des idées?
- Double Possible de Manuellement en invoquant ModelState de validation
Vous devez vous connecter pour publier un commentaire.
Une fois que vous avez supprimé l'élément fautif(s), désactivez la ModelState et de valider à nouveau, comme suit:
Note: faites attention lorsque vous utilisez
TryValidateModel
méthode parce que cette méthode ne permet pas de valider l'objet imbriqué de modèle (Comme mentionné par @Merenzo).Tard pour le jeu, mais quand même:
J'étais également à la recherche d'un moyen de valider le modèle après faire quelques ajustements pour elle (plus précisément: - pour les éléments de sa collection imbriquées) - et
TryValidateModel
ne fonctionne pas pour moi, car il ne traite pas des objets imbriqués.Enfin, j'ai installé personnalisé modèle de classeur:
sur le modèle de la classe: