2010-06-22 5 views
0

En utilisant le modèle MVC dans une application de bureau, quelle est la bonne approche pour présenter une vue à son contrôleur respectif, et vice-versa? Par exemple, si vous utilisez l'injection de constructeur pour donner à la vue son contrôleur, alors la vue appelle une méthode setView sur le contrôleur et se passe comme argument?Comment 'introduire' la vue et le contrôleur dans le modèle MVC?

(question est pas spécifique à un cadre/plate-forme.)

Répondre

3

Vues devraient être aussi stupide que possible. Ils ne devraient pas être au courant, ou compter sur des contrôleurs spécifiques pour les instancier. Au mieux, ils devraient avoir accès à une sorte de référence de classe de contrôleur de base qui leur est remise lors de la construction, généralement dans le cadre de l'objet "view data" qui enveloppe également le modèle à utiliser.

Votre contrôleur devrait être responsable de l'instanciation de la vue, en donnant à la vue le modèle qu'il affichera et en retournant le résultat de la vue. La vue ne devrait pas rappeler dans le contrôleur pour lui dire quoi retourner, car cela donne le contrôle du flux logique à la vue, qui n'est pas vraiment semblable à MVC.

+0

Merci! À propos de la première partie, quand voulez-vous donner à la vue la référence de classe de contrôleur de base, plutôt que seulement le modèle? – fig

+0

Vous donneriez les deux. En fonction de votre implémentation, il ne serait pas * obligatoire * de lui donner une référence de contrôleur, mais généralement le contrôleur aurait accès aux données de demande initiales, ce que votre vue pourrait avoir besoin. Par exemple, dans ASP.Net MVC, chaque View reçoit un modèle, mais il y a aussi une structure bien connue appelée "ViewData" qui contient un objet "ControllerContext", auquel vous pouvez accéder si votre vue a besoin de fouiller à la demande. . – womp

Questions connexes