Je suis en train d'écrire ma première application avec ASP.NET MVP (tentative de contrôleur de supervision) et Unit Testing (mieux vaut tard que jamais!), Et j'ai rencontré un peu de dilemme . J'ai écrit 3 contrôles utilisateur, tous testés et interférés, présentateurs en remorque. Maintenant, je suis venu à une page qui prend ces trois contrôles utilisateur et a rencontré le problème suivant:ASP.NET MVP - Utilisation des contrôles utilisateur
Contrôle utilisateur 1 est DateSelector, c'est un contrôle de calendrier avec un couple d'autres boutons/listes. Rien de vraiment excitant.
Le contrôle utilisateur 2 est DailyList. Devinez ce que c'est. Quoi qu'il en soit, vous pouvez sélectionner/supprimer etc. si vous sélectionnez un élément dans la grille, il doit remplir le contrôle utilisateur 3.
Le contrôle utilisateur 3 est ItemDetail. Voici les DropDownLists, TextBoxes, etc ... certains avec des dépendances existantes sur d'autres (en sélectionnant une option dans DropDown on affecte les options dans DropDown 2).
Si je sélectionne une nouvelle date à partir de DateSelector, est-ce que je déclenche l'événement à partir de DateSelector Presenter? Je dois en quelque sorte laisser les autres contrôles utilisateur savoir qu'une nouvelle date a été sélectionnée, afin qu'ils puissent relier leurs données, mais comment? Si j'utilise le présentateur de la page pour m'abonner aux présentateurs des vues de contrôle utilisateur, ne violerai-je pas de façon flagrante la loi de Demeter (exposant les présentateurs en tant que propriétés à travers leurs vues)? Ne dois-je pas utiliser le présentateur de la page en tant que contrôleur de la page? Y a-t-il quelque chose qui me manque? Tout ce que j'ai lu jusqu'ici dit: «MVP est génial, même avec les contrôles utilisateur», mais l'utilisation des contrôles utilisateur est facilement oubliée quand il s'agit d'exemples. Il me semble que MVC serait plus proche de mon mode de pensée sur celui-ci, mais actuellement, MVC n'est pas une option. Toute aide serait géniale ici. Merci d'avance.
Merci pour la clarification. Je suppose que mon vrai problème était de savoir où définir l'événement pour DateSelector. Puisque j'ai besoin d'accéder à l'événement à partir de la page, il devra être déclaré dans la vue (mais peut être levé depuis le présentateur). Pour votre information, vos articles de blog m'ont beaucoup aidé à démarrer. Merci! – jstephenson