2009-07-15 8 views
4

Comment la plupart des développeurs gèrent-ils les vues typées dans ASP.NET MVC lorsqu'elles traitent de grandes applications? Nous envisageons de placer des modèles spécifiques à View dans le dossier Models, puis de placer tous les objets de domaine dans un projet distinct. De cette façon, nos contrôleurs peuvent facilement ajouter l'objet domaine à la vue typée, sans que l'objet domaine ait besoin de connaître la disposition de la vue elle-même.Utilisation d'un modèle de vue + modèle de données dans ASP.NET MVC pour prendre en charge les vues typées?

Par exemple, si nous avons un objet employé avec:

  • Id
  • Prénom
  • Nom
  • Statut

Alors notre View employé peut utiliser un ViewEmployeeModel objet avec:

  • objet employé
  • Liste pour alimenter déroulante État
  • etc

Est-ce une approche raisonnable? Y a-t-il de meilleurs moyens d'accomplir la même chose? Cela me semble un peu étrange puisque j'ai deux modèles (un pour la vue, un pour les objets métier), mais n'est-ce pas mieux que d'utiliser des vues non typées?

Répondre

9

Je le fais presque en règle générale, parce que:

  1. Il vous permet de concevoir l'application vue en premier lieu de DB-première, ce qui est agréable lorsque l'on travaille avec des représentants des clients.
  2. Les vues ont généralement un graphique d'objet beaucoup plus "plat" que, disons, les modèles Entity Framework. LINQ facilite la cartographie.
  3. Les vues et le modèle de données peuvent évoluer beaucoup plus indépendamment.
  4. Il est généralement plus facile de modéliser la liaison à un modèle à vue plate avec, disons, des ID FK qu'un modèle d'entité qui attend des objets connexes entièrement matérialisés.
  5. Vous n'avez pas à vous soucier d'exposer accidentellement des propriétés "secrètes" ou des propriétés de liste blanche pour les mises à jour.
+0

Excellente façon d'y penser, merci! –

1

Je pense que c'est une approche très raisonnable. Une chose qui pourrait vous aider est AutoMapper.

1

Cela semble très bien, vous avez l'avantage que le modèle contient uniquement des informations nécessaires à la vue et pas beaucoup de fonctions/valeurs de logique métier agaçantes.

3

N'avez pas la réputation de commenter, mais Craig a raison. C'est une variante du modèle Model-View-ViewModel. Il y a un bon article disponible au Los Techies.

L'article utilise également le code AutoMapper que mgroves a indiqué ainsi vous devriez pouvoir tuer deux oiseaux avec une pierre.

Questions connexes