2010-08-12 8 views
2

Je suis légèrement confus au sujet de la relation contrôleur-modèle dans MVC.MVC: relation entre le contrôleur et le modèle

Un contrôleur doit-il pouvoir accéder à à un modèle dans le système ou doit-il avoir une relation 1: 1 avec un modèle spécifique? Si la relation est 1: 1, il est évident que si quelque chose d'autre doit être mis à jour, il ne peut pas, par exemple, mettre à jour un titre de fenêtre en dehors de la fenêtre triade. Les modèles doivent donc avoir accès à d'autres modèles (et comment les trouvent-ils?)

Si ce n'est pas 1: 1 et que le contrôleur peut accéder à n'importe quel modèle, comment sont-ils généralement accessibles (localisateur de service?) Et que se passe-t-il? être plus d'une instance d'un modèle spécifique.

Je suis un peu confus! Merci pour toute aide.

+0

Il existe bien sûr plusieurs façons de programmer, mais si vous utilisez le un à plusieurs, vous pouvez utiliser le modèle Repository. Découvrez le tutoriel NerdDinner pour plus d'informations sur ce modèle. http://nerddinnerbook.s3.amazonaws.com/Intro.htm –

Répondre

3

Pour les capacités CRUD de base, je pense qu'une relation 1: 1 fonctionne, mais ce n'est en aucun cas une règle selon laquelle chaque contrôleur doit avoir un modèle correspondant. Cela étant dit, je ne pense évidemment pas que ce soit un problème d'accéder à plusieurs modèles dans un contrôleur.

La seule chose qui a une relation 1: 1 dans mes applications MVC est les modèles et les tables.

0

Habituellement, je n'accède pas au modèle directement depuis le contrôleur. J'ajoute habituellement une autre couche entre le modèle et les contrôleurs. Par exemple: Controller Couche-> Service Couche-> Modèle couche

Pour chaque classe de modèle, je construis une classe de service pour y accéder et les contrôleurs peuvent accéder à tous les services de l'application. Je pense que c'est un bon moyen de faire les choses. Si vous avez besoin d'exemples, s'il vous plaît demander. :)

1

Le paradigme MVC est basé sur une règle principale, à savoir séparation des préoccupations. Rendre un contrôleur 1: 1 dépendant d'une sorte de relation avec un modèle ne sépare pas ces préoccupations, mais les rend plus unifiées. Un contrôleur appelé "utilisateurs" devrait seulement parler à un modèle appelé utilisateurs, mais pourquoi aller et faire une relation explicite?

Les modèles doivent presque toujours exister dans un contexte statique exclusif, de sorte qu'ils sont facilement accessibles dans les contrôleurs et autres modèles.