2009-05-03 11 views
7

Dans tous les diagrammes MVC que j'ai vus, il y a toujours un lien entre la vue et le modèle, indiquant que la vue a accès au modèle.ASP.net MVC - comment la vue accède-t-elle au modèle?

Je me demande simplement: Quand cela s'applique-t-il? À l'heure actuelle, mon action de contrôleur prend un paramètre de la chaîne de requête, interroge le modèle afin d'obtenir MyObjectViewData, puis renvoie une vue, en passant dans le MyObjectViewData. Donc, essentiellement, j'ai le contrôleur entre les deux.

Cela semble être l'approche logique, mais cela ne correspond pas à l'hypothèse selon laquelle Model et View ont des activités communes. Quelles sont les situations typiques où ils interagissent sans le contrôleur?

Répondre

6

Dans MVC (sur le web) la vue interagit directement avec le modèle en rendant une instance particulière d'une entité modèle. Il n'agit qu'indirectement sur le modèle via le contrôleur. Dans une implémentation non Web, vous pouvez utiliser le modèle d'observateur pour enregistrer des gestionnaires avec des éléments View qui peuvent appeler des méthodes du modèle qui mettent à jour l'interaction Modèle sans contrôleur. ASP.NET MVC et d'autres implémentations basées sur le Web sont plus faiblement couplés que les implémentations non-web. À mon avis, c'est une bonne chose. Il a tendance à faire pour une implémentation beaucoup plus gros du contrôleur et vous devez faire attention à garder la séparation des préoccupations entre le contrôleur et le modèle.

implémentations Web devrait probablement tirer sans la connexion indirecte du modèle à la vue puisque vous ne pouvez pas vraiment communiquer entre les deux sans le contrôleur. Je suppose que l'on pourrait soutenir qu'un service Web pourrait fournir cette connexion, mais je considérerais qu'il s'agit simplement d'une autre forme de contrôleur.

Questions connexes