2010-06-22 4 views

Répondre

7

En général, vous devrez référencer vos modèles de domaine dans vos modèles de vue, ou au moins charger les modèles de domaine les contrôleurs et transmettez les informations à votre View Model.

Je préfère garder les contrôleurs et vues comme de simples/muets que possible, parce que les deux modèles de domaine et Voir les modèles sont beaucoup plus faciles à tester.

Alors, je souvent référence à mes modèles de domaine dans mes modèles de vue. Parfois j'utilise l'agrégation, parfois je ne fais que copier des propriétés (dans certains projets avec de l'ancien code, dans d'autres projets utilisant un mappeur automatique)

+0

mais cela n'est que raisonnable et ne fonctionne que si votre modèle de domaine répond bien aux besoins de la vue. J'ai entendu dire qu'un modèle de vue ne devrait presque contenir que des propriétés de chaîne déjà formées. BTW vous n'avez pas besoin de copier les propriétés. Je vous suggère de lire sur AutoMapper, il suffit de google! C'est un excellent outil imho. – Rookian

+0

note je l'ai dit dans certains projets que je copie, dans d'autres j'utiliser un mappeur automatique, en particulier, AutoMapper :) En plus, je fais essentiellement ce que vous décrivez. Je n'utilise pas mes modèles de domaine comme modèles de vue. Nous avions l'habitude de faire cela et cela nous a mordu plusieurs fois. – CubanX

+0

Donc, si je vous comprends bien, vous mélangez les objets de modèle de vue et les objets de modèle de domaine. Et vous envoyez les deux (c'est-à-dire l'agrégat contenant un objet de modèle de vue et un objet de modèle de domaine) à la vue également? – Rookian

2

J'ai tendance à créer des vues séparées qui contiennent juste ce dont j'ai besoin d'être affiché la vue. AutoMapper est un outil de création pour rendre cela plus facile.

+1

Pourriez-vous expliquer plus en détail pourquoi vous ne mélangeriez PAS les objets de modèle de vue avec des objets de modèle de domaine? Avantages et inconvénients ... – Rookian

+0

Mes classes de modèle de domaine ont généralement beaucoup de méthodes de mutateur d'état sur eux. Je ne veux pas les exposer directement à la couche de vue simplement pour éviter toute confusion sur l'origine de ces méthodes. J'exige que toutes mes commandes de domaine passent par une couche de service qui relie les sessions DB appropriées, les vérifications de sécurité, etc. Cependant, j'expose généralement les objets de valeur de mon domaine directement à la couche MVC. Avoir aussi une séparation nette entre les modèles de lecture et d'écriture (CQS) aide à garder cela organisé. – Ryan

+0

J'essaye de faire en sorte que j'ai un modèle de vue pour chaque vue et que le modèle de vue ait ce dont il a besoin pour créer la vue. Ce modèle de vue peut être composé de plusieurs modèles de domaine et n'utiliser que certains champs de chacun. –

Questions connexes