ASP.NET MVC 2 RC 2 « Assistant » pour la validation de l'ensemble modèle
-
19-09-2019 - |
Question
Il y a une bonne solution simple pour une multi-page de contrôle "Assistant" ici dans MVC:
http://www.highoncoding.com/Articles/647_Creating_Wizard_Using_ASP_NET_MVC_Part_1.aspx
http://www.highoncoding.com/Articles/652_Creating_Wizard_in_ASP_NET_MVC_Part_2.aspx
Le modèle est peuplé en plusieurs étapes et un champ caché est utilisé pour maintenir les données entre les pages (un peu similaire à ViewState). Cependant, avec la sortie de MVC 2 RC2, le mécanisme de validation a été changé de « validation d'entrée » à « la validation du modèle »: http: // bradwilson.typepad.com/blog/2010/01/input-validation-vs-model-validation-in-aspnet-mvc.html
Maintenant, la première page du « Wizard » ne fait jamais validé, car il remplit seulement une partie du modèle. (Le reste doit être peuplé au cours d'autres étapes, mais comme on peut les champs nécessaires, les erreurs de validation sont présentés lors de la validation de la première page et l'utilisateur ne peut pas continuer).
Est-il possible de modifier cette mise en œuvre du « contrôle Wizard » en fonction de MVC RC2, ou si toute logique être repensée? Y a-t-il des meilleurs modèles pour la création d'un « contrôle assistant » de plusieurs pages pour remplir un modèle?
La solution
Je lis à travers les articles énumérés brièvement. Je pense que le problème est que vous passez un objet de domaine (client dans la démo) sur les deux écrans pour modifier. La moitié du client obtient édité dans le premier écran et l'autre moitié est édité à l'écran suivant.
Le modèle qui devrait vous aider ici est que, plutôt que de passer votre modèle actuel (client) à votre présentation, vous devriez (à mon humble avis) être seulement évanouissions un « modèle de vue ». C'est-à-dire que chaque point de vue (ou étape de l'assistant dans ce cas) aurait son propre modèle. CustomerNameViewModel et CustomerAddressViewModel pourraient être des objets appropriés pour le tutoriel indiqué. Cela signifie que chaque objet soit rempli de données entièrement quand ils reviennent pour la validation. Une fois que l'objet a été validé de façon appropriée, vous pouvez remplir votre objet client. Une fois que l'objet client est terminé à la fin de l'assistant alors vous persisteront l'objet client.
Autres conseils
http: // Blog .stevensanderson.com / 2010/02/19 / partielle validation en aspnet-mvc-2 / . Steven montre comment utiliser un ActionFilter pour faire la validation de vue partielle.