Question

« Recherche » dans cet exemple est un IList<string> d'abréviations de l'Etat. En général, votre modèle de domaine Poços ne comprend pas ces options. ViewModels prennent généralement cette responsabilité référence à la fois le modèle de domaine d'origine, ainsi que l'objet de recherche, mais ce qui se passe lorsque les modèles de domaine sont imbriqués et que vous utilisez des modèles MVC (qui ne sera pas avoir accès aux propriétés de la racine du modèle original?

Y at-il un moyen d'inclure les Lookups dans un objet et le modèle dans un autre objet pour le modèle? Est-il permis de monter sur la volée un spécifique ViewModel à ce modèle dans la vue (qui devrait inclure toutes les données imbriquées à partir de là)? Je pense que les méthodes statiques pour tirer vers le bas les valeurs Lookup est mauvaise.

Toutes les idées?

Notes (à ma connaissance):

Un modèle de domaine POCO à partir d'un référentiel ne change pas dans la structure. Si vous avez besoin d'un seul modèle pour avoir à la fois l'objet client et les options de DDL pour l'État des États-Unis par exemple, vous avez normalement une ViewModel qui référence l'objet client et les listes Lookup clients.

Toutefois, lorsque vous avez un imbriqué modèle de domaine (racine total), les objets imbriqués ont pas où mettre les listes Lookup et les modèles MVC ne peuvent pas accéder au niveau de la racine View Model (leur modèle de vue est le modèle partiel).

Modifier

Y at-il un moyen de mettre les listes de DDL dans le niveau de la racine du ViewModel, puis quand vous arrivez à l'objet client, construire une nouvelle ViewModel qui fait référence au niveau de la racine des listes de DDL et le courant objet client d'envoyer au modèle ? Cela permettrait d'éliminer les doublons dans le modèle, ainsi que d'utiliser un seul modèle pour toutes les vues. Le seul point négatif serait contrôleur comme les données du code assembleur dans votre vue (ce qui est tout aussi mauvais).

Était-ce utile?

La solution

Quelques suggestions. Tout d'abord, utiliser des modèles de vue séparés pour votre point de vue - ne pas utiliser directement vos modèles de domaine. Ces modèles de vue peuvent, et devraient, porter les données supplémentaires nécessaires par la vue. En second lieu, vous pouvez utiliser les surcharges sur DisplayFor / EditorFor pour transmettre des données de vue supplémentaires au modèle. De cette façon, votre modèle peut être spécifique à un modèle de domaine particulier et encore avoir accès aux données supplémentaires dans le modèle de vue.

Autres conseils

Pour statique, les listes ne changent pas comme les abréviations d'état, vous pouvez utiliser l'état d'application ou l'entrée du cache. Ces types de listes peuvent être chargées dans une base de données à partir Application_Start.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top